Tôi cần một số lời khuyên để tạo một kịch bản giúp tôi với nhiệm vụ lặp đi lặp lại, tôi làm mọi lúc trên môi trường phát triển. Tôi có một máy chủ PostgreSQL và vì tôi đang phát triển một ứng dụng web nên tôi cần bỏ, tạo và điền vào một số bảng mọi lúc và đây là một quá trình tẻ nhạt. Vì vậy, tôi cần xây dựng một số loại bash script để giúp tôi về điều này. Về cơ bản, đây là công việc lặp đi lặp lại mà tôi làm mọi lúc, từ GUI pgAdmin:
#!/bin/sh
psql -u postgres -w // this line should connect to PostgreSQL asking for a password since I not found other way to pass the password on that line
DROP DATABASE sis_db; // drop the DB
CREATE DATABASE sis_db WITH OWNER = postgres ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1; // create the DB
// Create some schemas on the DB ( I don't know if I should select the DB first)
CREATE SCHEMA nomencladores AUTHORIZATION postgres;
CREATE SCHEMA negocio AUTHORIZATION postgres;
CREATE SCHEMA usuarios_externos AUTHORIZATION postgres;
Và cuối cùng tôi nên tải khoảng 10 .sql
tập tin nhưng không biết nếu -filename
cho phép nhiều hơn một tập tin tại một thời điểm. Tôi cần một số lời khuyên về kịch bản bash này vì tôi không biết làm thế nào để có được nó, có ai có thể giúp tôi không?
Cập nhật: Cách tiếp cận tập lệnh đầu tiên
Ok, bằng cách thực hiện một nghiên cứu sâu, tôi đi kèm với giải pháp này có hiệu quả nhưng bỏ lỡ một số điều mà tôi cũng cần. Tôi đã thực hiện kịch bản này:
#!/bin/sh
# kill all connections to the postgres server
echo "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity where pg_stat_activity.datname='sis_db';" | psql -U postgres -w
# drop the DB
echo "DROP DATABASE sis_db;" | psql -U postgres -w
# create the DB
echo "CREATE DATABASE sis_db WITH OWNER = postgres ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1;" | psql -U postgres -w
# create schemas
echo "CREATE SCHEMA nomencladores AUTHORIZATION postgres;" | psql -U postgres -d sis_db -w
echo "CREATE SCHEMA negocio AUTHORIZATION postgres;" | psql -U postgres -d sis_db -w
echo "CREATE SCHEMA usuarios_externos AUTHORIZATION postgres;" | psql -U postgres -d sis_db -w
Nó sẽ sử dụng một /root/.pgpass
tập tin mà tôi đã tạo và cấu hình. Kịch bản ngay bây giờ đang hoạt động như tôi muốn nhưng điều tôi không biết là làm thế nào để thêm một số tệp cùng một lúc, nghĩa là, sau khi tạo lược đồ thực thi nội dung của sql1.sql
, sql2.sql
và như vậy, bất kỳ trợ giúp hoặc lời khuyên?