วิธีการนำเข้าไฟล์ * .sql ที่มีอยู่ใน PostgreSQL 8.4


105

ฉันใช้ PostgreSQL 8.4 และฉันมีไฟล์ * .sql เพื่อนำเข้าสู่ฐานข้อมูล ฉันจะทำเช่นนั้นได้อย่างไร?

คำตอบ:


142

จากบรรทัดคำสั่ง:

psql -f 1.sql
psql -f 2.sql

จากpsqlข้อความแจ้ง:

\i 1.sql
\i 2.sql

โปรดทราบว่าคุณอาจต้องนำเข้าไฟล์ตามลำดับที่ระบุ (ตัวอย่างเช่นการกำหนดข้อมูลก่อนการจัดการข้อมูล) หากคุณมีbashเชลล์ (GNU / Linux, Mac OS X, Cygwin) และไฟล์อาจถูกนำเข้าตามลำดับตัวอักษรคุณสามารถใช้คำสั่งนี้:

for f in *.sql ; do psql -f $f ; done

นี่คือเอกสารของpsqlแอปพลิเคชัน (ขอบคุณ Frank): http://www.postgresql.org/docs/current/static/app-psql.html


@moon บางทีคุณอาจไม่มีสิทธิ์เข้าถึงไฟล์ SQL? คุณใช้ระบบปฏิบัติการอะไร
Bolo

@moon เป็นรหัสผ่านที่เชื่อมโยงกับผู้ใช้ PostgreSQL ของคุณ (คู่รหัสผ่านของผู้ใช้จะถูกเก็บไว้ใน PostgreSQL)
Bolo

8
@moon ฉันขอแนะนำให้คุณแบ่งปัญหาของคุณออกเป็นสามขั้นตอน: 1) ตรวจสอบให้แน่ใจว่าคุณสามารถpsqlทำงานได้ 2) ให้แน่ใจว่าผู้ใช้ของคุณมีสิทธิ์ที่จำเป็นในการเขียนเช่น: CREATE, INSERT, UPDATEฯลฯ 3) นำเข้าไฟล์ของ SQL เท่าที่ฉันเข้าใจตอนนี้คุณอยู่ในขั้นที่ 1 แล้ว
Bolo

@Bolo: คุณจะใส่สามขั้นตอนเป็นคำตอบหรือไม่?
AH

@Bolo อย่างที่คุณพูดตอนนี้ฉันอยู่ในขั้นตอนที่สาม แต่ฉันจะนำเข้าไฟล์. sql จากเครื่องในพื้นที่ของฉันได้อย่างไร ฉันลอง \ i [เส้นทางแบบเต็มพร้อมนามสกุล] แต่ได้รับข้อความแสดงข้อผิดพลาด. sql ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว คุณช่วยยกตัวอย่างได้ไหม

75

ในบรรทัดคำสั่งก่อนถึงไดเร็กทอรีที่มี psql อยู่จากนั้นเขียนคำสั่งดังนี้:

psql [database name] [username]

จากนั้นกด Enter psql ถามรหัสผ่านให้รหัสผ่านผู้ใช้:

จากนั้นเขียน

> \i [full path and file name with extension]

จากนั้นกด Enter insertion done


ฉันก็ใช้ตัวนี้เหมือนกัน และได้ผล แต่ฉันเปลี่ยนคำสั่ง SQL ที่ให้มา ก่อนหน้านี้ * .sql ที่มีอยู่ไม่ได้ใช้อักขระใด ๆ เป็นการสิ้นสุดของบรรทัด และฉันต้องลบ GO ด้วย คุณคิดว่าสคริปต์ sql ไม่ใช่สคริปต์ psql หรือไม่?
swdev

ฉันพยายามใช้ \ i [เส้นทางเต็มพร้อมนามสกุล] แต่ได้รับข้อความแสดงข้อผิดพลาด. sql ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว โปรดอัปโหลดตัวอย่าง ขอบคุณ.

หากฉันบอกว่าไม่มีไฟล์ดังกล่าวแสดงว่าไม่พบไฟล์ที่ตำแหน่งนั้น ที่ดีที่สุดคือให้ URL ที่สมบูรณ์ สำหรับฉันใน Windows บรรทัดคำสั่งนี้ใช้งานได้: \ i /tmp/robert/test.sql แน่นอนว่าคุณต้องมีคำสั่ง SQL ที่ถูกต้องในไฟล์นั้น
shevy

36

วิธีที่สั้นที่สุดที่ฉันรู้มีดังต่อไปนี้:

psql -U {user_name} -d {database_name} -f {file_path} -h {host_name}

database_name:ฐานข้อมูลใดที่คุณควรแทรกข้อมูลไฟล์ของคุณ

file_path:พา ธ สัมบูรณ์ไปยังไฟล์ที่คุณต้องการนำเข้า

host_name:ชื่อของโฮสต์ localhostเพื่อการพัฒนาก็เป็นส่วนใหญ่

เมื่อป้อนคำสั่งนี้ในคอนโซลคุณจะได้รับแจ้งให้ป้อนรหัสผ่านของคุณ



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.