Có GUI quản trị viên Postgres có thể thực thi một tệp chủ chứa nhiều tệp sql không


8

Tôi đang phát triển một kịch bản thực sự dài. Tôi muốn chia tập lệnh thành các tập lệnh nhỏ hơn, dễ quản lý hơn và bao gồm mỗi tệp sql trong một tệp chính, sau đó chỉ cần thực thi tệp chính.

thí dụ: master.sql

nội dung (Tôi không biết cú pháp sử dụng):

file1.sql
file2.sql
file3.sql

Tôi đã tìm thấy một số hướng dẫn về cách sử dụng psql -ftrong dòng lệnh và \ibao gồm các tệp này, nhưng ưu tiên ở đây là tránh thiết bị đầu cuối và sử dụng GUI để quản lý cơ sở dữ liệu của tôi và thực thi master.sqltập lệnh.

Điều này có thể có trong bất kỳ GUI quản trị postgres nào không? Có lẽ nó không có trong pgAdmin.


Bạn có thể chỉnh sửa các tệp SQL của mình trong bất kỳ trình soạn thảo nào (có nhiều tùy chọn tốt hơn pgAdmin) và sau đó chỉ chạy một lệnh duy nhất trong psql (giả sử psql -f master.sql).
dezso

Được rồi, tôi sẽ rõ: bạn có lẽ không thể làm điều đó trong pgAdmin. Dù sao, tôi thực sự không thể hiểu tại sao đây là một vấn đề (tôi có thể đã quá quen với giới hạn này).
dezso

Cảm ơn các bình luận. Và bạn sẽ có thể thấy rằng đó một vấn đề mà không có giải pháp nếu bạn cố gắng làm những gì tôi muốn trong pgAdmin. Nó có thể là một giới hạn (WADU) của pgAdmin, như bạn nói, vì vậy tôi sẽ chỉnh sửa câu hỏi của mình để mở nó ra để yêu cầu BẤT K GUI GUI nào sẽ thực hiện điều này.
jbits

1

Cảm ơn @a_horse_with_no_name. Tôi nhận thấy trong URL được tham chiếu rằng: "Nếu tập lệnh SQL đi kèm chứa các truy vấn CHỌN, kết quả của các truy vấn đó sẽ không được hiển thị trong GUI". Kịch bản của tôi có nhiều câu lệnh chọn. Để xác nhận từ chối trách nhiệm này, tôi đã thử nghiệm sản phẩm này bằng lệnh WbInclude trên một tập lệnh rất đơn giản có chứa một lựa chọn và xác nhận rằng nó không hiển thị kết quả. Tôi tự hỏi tại sao? Dù sao, ngoài điều đó, sản phẩm này chắc chắn hoạt động để gọi các tập lệnh khác trong các tập lệnh.
jbits

Câu trả lời:


2

Một psqlkịch bản

Một tập lệnh psql có thể lập chỉ mục cho nhiều tệp, giả sử 01_mydb.psql, nằm trong thư mục làm việc hiện tại và bạn có một thư mục 01có các tệp 01_schema.sql02_types.sql.

01_mydb.psql có thể trông như thế này

\i 01/01_schema.sql
\i 01/02_types.sql

Hoặc tuy nhiên bạn muốn cấu trúc nó. Nếu mọi thứ trở nên phức tạp hơn và cần nhiều thứ tự hơn, hãy thêm nhiều thư mục con

\i 01/10_tables/01_foo.sql
\i 01/10_tables/02_bar.sql

Sau đó, bạn sẽ chỉ ..

  1. Thêm một tệp chỉ mục vào 01, một cái gì đó như./01/10_tables.psql
  2. Hoặc, chỉ cần thêm tất cả vào 01_mydb.sql

Tôi sẽ hiển thị phương thức thứ hai bằng cách sử dụng find,

Sử dụng findđể tạo tập lệnh tải chính.

Hãy tiếp tục và tạo ra cấu trúc đó.

01/
├── 01_schema.psql
├── 02_types.psql
└── 10_tables
    ├── 01_foo.psql
    └── 02_bar.psql

Đây là các lệnh chúng ta sử dụng để tạo ra nó.,

mkdir 01
touch 01/01_schema.sql
touch 01/02_types.sql
mkdir 01/10_tables
touch 01/10_tables/01_foo.sql
touch 01/10_tables/02_bar.sql

Bây giờ bạn có thể sử dụng findđể tạo tập lệnh tải

find ./01/ -type f -printf '\\i %p\n' | sort | tee master.psql
\i ./01/01_schema.sql
\i ./01/02_types.sql
\i ./01/10_tables/01_foo.sql
\i ./01/10_tables/02_bar.sql

Bây giờ chỉ cần chạy master.psql;

psql -d database -f master.psql
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.