Nguồn một số tệp cùng một lúc với psql


27

Tôi muốn thực hiện một số tập lệnh sql tuần tự với psqlmột giao dịch duy nhất để thiết lập lược đồ cơ sở dữ liệu của mình. Cách tốt nhất để làm việc này là gì? Trước đây tôi biết tôi có một tập lệnh chính mà tôi đã chạy psqlvới nó bao gồm các tập tin khác tuy nhiên tôi không nhớ cú pháp của tập lệnh này.

Câu trả lời:


32

Kịch bản của bạn có thể trông như thế này:

BEGIN;
\i file1.sql
\i file2.sql
COMMIT;

Hoặc bạn có thể làm một cái gì đó như thế này:

cat file1.sql file2.sql | psql -1 -f -

1
Hiểu đường ống trong vỏ giúp tôi có được lệnh cuối cùng.
ma11hew28

Ví dụ của bạn với BEGIN; CAM KẾT; không hoạt động, bạn cần các cột bán ở cuối mỗi \idòng:
nichochar

0

Tôi đã làm điều đó bằng cách sử dụng find trong unix / linux với đường dẫn đến tệp sql vừa qua với tham số rep_sql với hướng dẫn "đọc":

find -P ${rep_sql} -type f -name *.sql -execdir psql -d "mabase" -f {} +

Nó nói: find không theo các tệp liên kết bất kể tên nào với ext là «.sql» và thực thi trong thư mục của tệp psql làm việc với mabase và thực thi tệp được tìm thấy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.