ไฟล์สำหรับฐานข้อมูล PostgreSQL อยู่ที่ไหน
ไฟล์สำหรับฐานข้อมูล PostgreSQL อยู่ที่ไหน
คำตอบ:
หากต้องการดูว่าไดเรกทอรีข้อมูลอยู่ที่ใดให้ใช้แบบสอบถามนี้
show data_directory;
หากต้องการดูพารามิเตอร์รันไทม์ทั้งหมดให้ใช้
show all;
คุณสามารถสร้างพื้นที่ตารางเพื่อจัดเก็บวัตถุฐานข้อมูลในส่วนอื่น ๆ ของระบบไฟล์ หากต้องการดูพื้นที่ตารางซึ่งอาจไม่อยู่ในไดเรกทอรีข้อมูลให้ใช้แบบสอบถามนี้
SELECT * FROM pg_tablespace;
บน Windows7 ฐานข้อมูลทั้งหมดจะถูกเรียกโดยตัวเลขในไฟล์ชื่อภายใต้pg_database
จากนั้นคุณควรค้นหาชื่อโฟลเดอร์โดยตัวเลขที่อยู่ภายใต้C:\Program Files (x86)\PostgreSQL\8.2\data\global
C:\Program Files (x86)\PostgreSQL\8.2\data\base
นั่นคือเนื้อหาของฐานข้อมูล
เปิด pgAdmin และไปที่คุณสมบัติสำหรับฐานข้อมูลเฉพาะ ค้นหา OID จากนั้นเปิดไดเรกทอรี
<POSTGRESQL_DIRECTORY>/data/base/<OID>
ควรมีไฟล์ DB ของคุณ
SELECT oid from pg_database where datname = '<dbname>'
ตามที่แนะนำใน " ตำแหน่งเริ่มต้นของฐานข้อมูล PostgreSQL บน Linux " ภายใต้ Linux คุณสามารถค้นหาโดยใช้คำสั่งต่อไปนี้:
ps aux | grep postgres | grep -- -D
ภายใต้การติดตั้ง Linux ของฉันอยู่ที่นี่: /var/lib/postgresql/8.x/
คุณสามารถเปลี่ยนได้ด้วย initdb -D "c:/mydb/"
/var/lib/pgsql/data
มันภายใต้ ps auxw|grep postgres|grep -- -D
ดีกว่าที่จะหาออกมาใช้
ตำแหน่งของตาราง / ดัชนีที่เฉพาะเจาะจงสามารถปรับเปลี่ยนได้โดย TABLESPACEs:
CREATE TABLESPACE dbspace LOCATION '/data/dbs';
CREATE TABLE something (......) TABLESPACE dbspace;
CREATE TABLE otherthing (......) TABLESPACE dbspace;
ทุกคนตอบแล้ว แต่สำหรับการอัพเดทล่าสุด หากคุณต้องการทราบว่าไฟล์การตั้งค่าทั้งหมดอยู่ที่ไหนให้เรียกใช้คำสั่งนี้ในเปลือก
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
ฉันพนันว่าคุณกำลังถามคำถามนี้เพราะคุณลองpg_ctl start
แล้วได้รับข้อผิดพลาดต่อไปนี้:
pg_ctl: ไม่ได้ระบุไดเรกทอรีฐานข้อมูลและตัวแปรสภาพแวดล้อม PGDATA ไม่ได้ตั้งค่า
คุณกำลังมองหาไดเรกทอรีที่จะใส่-D
เข้าไปpg_ctl start
คำสั่ง
ในกรณีนี้ไดเรกทอรีที่คุณค้นหามีไฟล์เหล่านี้
PG_VERSION pg_dynshmem pg_multixact
pg_snapshots pg_tblspc postgresql.conf
base pg_hba.conf pg_notify
pg_stat pg_twophase postmaster.opts
global pg_ident.conf pg_replslot
pg_stat_tmp pg_xlog postmaster.pid
pg_clog pg_logical pg_serial
pg_subtrans postgresql.auto.conf server.log
คุณสามารถค้นหาได้โดยค้นหาไฟล์และไดเรกทอรีด้านบนโดยใช้การค้นหาที่มาพร้อมกับระบบปฏิบัติการของคุณ
ยกตัวอย่างเช่นในกรณีของฉัน (กHomebrewติดตั้งบนMac OS X ), /usr/local/var/postgres
ไฟล์เหล่านี้จะอยู่ใน ในการเริ่มต้นเซิร์ฟเวอร์ฉันพิมพ์:
pg_ctl -D /usr/local/var/postgres -w start
... และมันใช้งานได้
brew info postgres
locate <filename>
sudo locate <filename>
Postgres จัดเก็บข้อมูลในไฟล์ในไดเรกทอรีข้อมูล ทำตามขั้นตอนด้านล่างเพื่อไปที่ฐานข้อมูลและไฟล์:
ฐานข้อมูลที่สอดคล้องกับไฟล์ตาราง postgresql เป็นไดเรกทอรี SHOW data_directory
สถานที่ตั้งของไดเรกทอรีข้อมูลทั้งหมดจะได้รับจากการทำงาน ใน UNIX เช่น OS (เช่น: Mac) /Library/PostgreSQL/9.4/data
เข้าไปในโฟลเดอร์ฐานในไดเรกทอรีข้อมูลที่มีโฟลเดอร์ฐานข้อมูลทั้งหมด:/Library/PostgreSQL/9.4/data/base
ค้นหาชื่อโฟลเดอร์ฐานข้อมูลโดยเรียกใช้ (ให้จำนวนเต็มนี่คือชื่อโฟลเดอร์ฐานข้อมูล):
SELECT oid from pg_database WHERE datname = <database_name>;
ค้นหาชื่อไฟล์ตารางโดยเรียกใช้ (ให้จำนวนเต็มนี่คือชื่อไฟล์):
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
นี่คือไฟล์ไบนารี รายละเอียดไฟล์เช่นขนาดและวันที่สร้างสามารถรับได้ตามปกติ สำหรับข้อมูลเพิ่มเติมอ่านหัวข้อนี้
บน Mac: /Library/PostgreSQL/9.0/data/base
ไม่สามารถป้อนไดเรกทอรี แต่คุณสามารถดูเนื้อหาผ่าน: sudo du -hc data
/usr/local/var/postgres
คุณจะสามารถค้นพบได้โดยใช้show data_directory;
ทิปของ @ MikeSherrill
/Library/PostgreSQL/9.0/data/base
ดูเหมือนว่าสถานที่อื่น ๆ Mac /usr/local/var/postgres
เหมือนกว่า คุณไม่สามารถเรียกดูส่วนหลังใน Finder โดยไม่ได้เปิดใช้งานคุณสมบัติ Finder ที่ซ่อนอยู่
บน Windows, ไดเรกทอรี PGDATA ที่เอกสาร PostgresSQL อธิบายC:\Program Files\PostgreSQL\8.1\data
ที่บางแห่งเช่น ข้อมูลสำหรับฐานข้อมูลเฉพาะอยู่ภายใต้ (ตัวอย่าง) C:\Program Files\PostgreSQL\8.1\data\base\100929
โดยที่ฉันเดาว่า 100929 คือหมายเลขฐานข้อมูล
คำตอบของ picmate นั้นถูกต้อง บน windows ที่ตั้งโฟลเดอร์ DB หลักคือ (อย่างน้อยในการติดตั้งของฉัน)
C:\PostgreSQL\9.2\data\base\
และไม่อยู่ในไฟล์โปรแกรม
2 สคริปต์ของเขาจะให้ไดเรกทอรีที่แน่นอน / ไฟล์ที่คุณต้องการ:
SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
ฉันอยู่ในชื่อ 16393 และ relfilenode 41603
ฉันทำงาน postgres (9.5) ในภาชนะนักเทียบท่า (หรือตามความ CentOS ที่มันเกิดขึ้น) และเป็นSkippy le Grand gourou/var/lib/postgresql/data/
กล่าวถึงในความคิดเห็นข้างต้นไฟล์ที่อยู่ใน
$ docker exec -it my-postgres-db-container bash
root@c7d61efe2a5d:/# cd /var/lib/postgresql/data/
root@c7d61efe2a5d:/var/lib/postgresql/data# ls -lh
total 56K
drwx------. 7 postgres postgres 71 Apr 5 2018 base
drwx------. 2 postgres postgres 4.0K Nov 2 02:42 global
drwx------. 2 postgres postgres 18 Dec 27 2017 pg_clog
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_commit_ts
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_dynshmem
-rw-------. 1 postgres postgres 4.4K Dec 27 2017 pg_hba.conf
-rw-------. 1 postgres postgres 1.6K Dec 27 2017 pg_ident.conf
drwx------. 4 postgres postgres 39 Dec 27 2017 pg_logical
drwx------. 4 postgres postgres 36 Dec 27 2017 pg_multixact
drwx------. 2 postgres postgres 18 Nov 2 02:42 pg_notify
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_replslot
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_serial
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_snapshots
drwx------. 2 postgres postgres 6 Sep 16 21:15 pg_stat
drwx------. 2 postgres postgres 63 Nov 8 02:41 pg_stat_tmp
drwx------. 2 postgres postgres 18 Oct 24 2018 pg_subtrans
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_tblspc
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_twophase
-rw-------. 1 postgres postgres 4 Dec 27 2017 PG_VERSION
drwx------. 3 postgres postgres 92 Dec 20 2018 pg_xlog
-rw-------. 1 postgres postgres 88 Dec 27 2017 postgresql.auto.conf
-rw-------. 1 postgres postgres 21K Dec 27 2017 postgresql.conf
-rw-------. 1 postgres postgres 37 Nov 2 02:42 postmaster.opts
-rw-------. 1 postgres postgres 85 Nov 2 02:42 postmaster.pid