PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Skrypt powłoki do wykonywania poleceń pgsql w plikach

Po pierwsze, nie mix psql meta-polecenia i SQL polecenia. Są to oddzielne zestawy poleceń. Są sztuczki, aby je połączyć (używając meta-polecenia psql \o i \\ i przesyłanie ciągów do psql w powłoce), ale szybko się to myli.

  • Spraw, aby Twoje pliki zawierały tylko polecenia SQL.
  • Nie dołączaj CREATE DATABASE instrukcja w plikach SQL. Utwórz bazę danych osobno, masz wiele pliki, które chcesz wykonać w tej samej bazie danych szablonu.

Zakładając pracujesz jako użytkownik systemu operacyjnego postgres i użyj roli DB postgres jako (domyślnie) superużytkownik Postgres, wszystkie bazy danych znajdują się w tym samym klastrze DB na domyślnym porcie 5432 i roli postgres ma dostęp bez hasła dzięki IDENT ustawienie w pg_hba.conf - domyślna konfiguracja.

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

Oparłem nową bazę danych szablonów na domyślnej bazie danych szablonów systemu template0 . Podstawy w instrukcji tutaj.

Twoje pytania

Jak (...) uruchomić zestaw poleceń cmd pgsql z pliku

Wypróbuj:

psql mytemplate1 -f file

Przykładowy plik skryptu dla partii plików w katalogu:

#! /bin/sh

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

Opcja polecenia -f sprawia, że ​​psql wykonywać polecenia SQL w pliku.

Jak stworzyć bazę danych na podstawie istniejącego szablonu w linii poleceń

psql -c 'CREATE DATABASE my_db TEMPLATE mytemplate1'

Opcja polecenia -c sprawia, że ​​psql wykonać pojedynczy ciąg poleceń SQL. Może być wieloma poleceniami zakończonymi przez ; - zostanie wykonany za jednego transakcja i zwrócony tylko wynik ostatniego polecenia.
Przeczytaj o opcjach polecenia psql w instrukcji.

Jeśli nie podasz bazy danych do połączenia, psql połączy się z domyślną bazą danych konserwacji o nazwie „postgres”. W drugiej odpowiedzi nie ma znaczenia, z którą bazą danych się łączymy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zwiększyć maksymalną liczbę połączeń w postgresie?

  2. Zwróć zestaw rekordów (wirtualną tabelę) z funkcji

  3. Jaki typ znacznika czasu wybrać w bazie danych PostgreSQL?

  4. Importowanie .csv z kolumną datownika (dd.mm.rrrr gg.mm.ss) przy użyciu psql \copy

  5. Instalowanie pg -v 0.17.1