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

Защо не мога да използвам променлива в команда с обратна наклонена черта на postgres (\COPY)

По принцип заместването на променливи работи с мета-команди (започващи с обратна наклонена черта), но \copy е изключение, както е документирано в manpage на psql :

Не съм съгласен с коментара на @BaconBits към въпроса, че EXECUTE на plpgsql може да е отговорът. Изявление от страна на сървъра, динамично или друго, няма да има достъп до файловата система от страна на клиента, противно на \copy . Можете да използвате COPY вместо това, но изисква да сте суперпотребител и този файл да бъде достъпен за postgres потребител на сървъра.

Вярвам, че към \copy от име на файл с променлива, променливата трябва да бъде инжектирана в скрипта преди psql чете го. Можете да интегрирате SQL скрипта в shell скрипт и да го подадете към psql като тук-низ с възможност за корекция или го филтрирайте чрез sed или perl или друг подобен unix-ish метод.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изключение на Geodjango при импортиране на django.contrib.gis.gdal:OSError:/usr/lib/libgdal.so.1:недефиниран символ:sqlite3_column_table_name

  2. GROUP BY и агрегирани последователни числови стойности

  3. PG::DuplicateTable:ГРЕШКА:публикациите за връзка вече съществуват

  4. Достъп до Postgres RDS от Kubernetes клъстер в AWS

  5. Най-добрият начин за преброяване на записи на произволни интервали от време в Rails+Postgres