PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Shell скрипт за изпълнение на pgsql команди във файлове

Първо, не смесете psql мета-команди и SQL команди. Това са отделни набори от команди. Има трикове за комбиниране на тези (с помощта на метакомандите на psql \o и \\ и изпращане на низове към psql в обвивката), но това бързо става объркващо.

  • Направете вашите файлове да съдържат само SQL команди.
  • Не включвайте CREATE DATABASE изявление в SQL файловете. Създайте db отделно, имате множество файлове, които искате да изпълните в същия шаблон db.

Да предположим работите като потребител на ОС postgres и използвайте ролята на DB postgres като (по подразбиране) суперпотребител на Postgres, всички бази данни са в един и същ DB клъстер на порта по подразбиране 5432 и ролята postgres има достъп без парола поради IDENT настройка в pg_hba.conf - настройка по подразбиране.

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

Базирах новата база данни с шаблони на базата данни за шаблони по подразбиране template0 . Основни положения в ръководството тук.

Вашите въпроси

Как да (...) стартирате набор от pgsql cmds от файл

Опитайте:

psql mytemplate1 -f file

Примерен скриптов файл за пакет от файлове в директория:

#! /bin/sh

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

Опцията на командата -f прави psql изпълнява SQL команди във файл.

Как да създадете база данни на базата на съществуващ шаблон в командния ред

psql -c 'CREATE DATABASE my_db TEMPLATE mytemplate1'

Командната опция -c прави psql изпълнете единичен SQL команден низ. Могат да бъдат множество команди, прекратени с ; - ще се изпълни в един транзакция и се връща само резултатът от последната команда.
Прочетете за опциите на командата psql в ръководството.

Ако не предоставите база данни за свързване, psql ще се свърже с базата данни за поддръжка по подразбиране, наречена "postgres". Във втория отговор е без значение към коя база данни се свързваме.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Команда Postgresql COPY, даваща грешка за отказа на разрешения

  2. Как да съхранявате масив или множество стойности в една колона

  3. sql ПОРЪЧАЙТЕ ПО множество стойности в определен ред?

  4. Как да настроите изходния формат на интервала в PostgreSQL

  5. JPA flush срещу commit