PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tập lệnh shell để thực thi các lệnh pgsql trong tệp

Trước hết, không trộn psql lệnh meta và SQL các lệnh. Đây là những bộ lệnh riêng biệt. Có những thủ thuật để kết hợp chúng (sử dụng các lệnh meta psql \o\\ và chuyển các chuỗi sang psql trong shell), nhưng điều đó nhanh chóng gây nhầm lẫn.

  • Làm cho các tệp của bạn chỉ chứa các lệnh SQL.
  • Không bao gồm CREATE DATABASE câu lệnh trong tệp SQL. Tạo db riêng biệt, bạn có nhiều các tệp bạn muốn thực thi trong cùng một db mẫu.

Giả định bạn đang hoạt động với tư cách người dùng hệ điều hành postgres và sử dụng vai trò DB postgres là (mặc định) Postgres superuser, tất cả cơ sở dữ liệu nằm trong cùng một cụm DB trên cổng mặc định 5432 và vai trò postgres có quyền truy cập không cần mật khẩu do IDENT cài đặt trong pg_hba.conf - một thiết lập mặc định.

psql postgres -c "CREATE DATABASE mytemplate1 WITH ENCODING 'UTF8'
                  TEMPLATE template0"

Tôi dựa trên cơ sở dữ liệu mẫu mới trên cơ sở dữ liệu mẫu hệ thống mặc định template0 . Thông tin cơ bản trong sách hướng dẫn tại đây.

Câu hỏi của bạn

Cách (...) chạy một tập hợp các cmds pgsql từ tệp

Hãy thử:

psql mytemplate1 -f file

Tệp tập lệnh mẫu cho hàng loạt tệp trong một thư mục:

#! /bin/sh

for file in /path/to/files/*; do
    psql mytemplate1 -f "$file"
done

Tùy chọn lệnh -f làm cho psql thực hiện các lệnh SQL trong một tệp.

Cách tạo cơ sở dữ liệu dựa trên mẫu hiện có tại dòng lệnh

psql -c 'CREATE DATABASE my_db TEMPLATE mytemplate1'

Tùy chọn lệnh -c làm cho psql thực hiện một chuỗi lệnh SQL duy nhất. Có thể là nhiều lệnh, được kết thúc bởi ; - sẽ được thực hiện trong một giao dịch và chỉ kết quả của lệnh cuối cùng được trả về.
Đọc về các tùy chọn lệnh psql trong sách hướng dẫn.

Nếu bạn không cung cấp cơ sở dữ liệu để kết nối, psql sẽ kết nối với cơ sở dữ liệu bảo trì mặc định có tên "postgres". Trong câu trả lời thứ hai, không liên quan đến việc chúng tôi kết nối với cơ sở dữ liệu nào.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails Console tìm người dùng theo mảng id

  2. Thúc đẩy hiệu suất cho PostgreSQL với HAProxy

  3. Postgres - TẠO BẢNG TỪ CHỌN

  4. Lỗi cú pháp tại hoặc gần người dùng khi thêm ràng buộc Postgres

  5. Kiểu dữ liệu của Postgres NUMERIC có thể lưu trữ các giá trị đã ký không?