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

В PostgreSQL, как да вмъкна данни с команда COPY?

COPY tbl FROM STDIN;

не се поддържа от pgAdmin.
Получавате обикновена синтактична грешка, защото Postgres получава данните като SQL код.

Четири възможни решения:

1. Използвайте многоредов INSERT вместо това:

INSERT INTO beer(name, tags, alcohol, brewery, id, brewery_id, image)
VALUES 
  ('Bons Voeux', 'blonde', 9.5, 'Brasserie Dupont', 250, 130, 'generic.png')
, ('Boerke Blond', 'blonde', 6.8, 'Brouwerij Angerik', 233, 287 'generic.png')
;

Обърнете внимание на различния (SQL) синтаксис за стойности като низови или числови литерали.

Можете да генерирате данните с pg_dump използвайки --inserts . Свързано:

  • Експортирайте конкретни редове от PostgreSQL таблица като INSERT SQL скрипт

2. Или извикайте своя скрипт от командния ред, като използвате psql . Като системен потребител postgres :

psql -f beer.sql -U my_login_role -d db_name 

База данни (-d ) и роля за влизане (-U за „Потребител“) може да се пропусне, ако настройките по подразбиране са наред. Примери за синтаксис:

  • Създайте база данни Postgres с помощта на пакетен файл с [шаблон], [кодиране], [собственик] и .sql файл

Уверете се, че има маркер за край на данните (\. ) за text по подразбиране формат. (Имате това.) Ръководството:

Краят на данните може да бъде представен с един ред, съдържащ период на наклонена черта (\. ). Маркер за край на данните не е необходим при четене от файл, тъй като краят на файла служи перфектно; необходимо е само при копиране на данни към или от клиентски приложения, използващи клиентски протокол преди версия 3.0.

3. Или преместете данните си в отделен файл на сървъра , кажете 'beer_data.csv' и използвайте COPY .. FROM 'filename' във вашия скрипт:

COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';

Което работи така или иначе. Все пак имате нужда от привилегии на суперпотребител. Ръководството:

[...] COPY именуването на файл или команда е разрешено само на суперпотребители на база данни или потребители, на които е предоставена една от ролите по подразбиранеpg_read_server_files , pg_write_server_files , илиpg_execute_server_program , тъй като позволява четене или запис на всеки файл или стартиране на програма, до която сървърът има привилегии за достъп.

(pg_read_server_files , pg_write_server_files и pg_execute_server_program са нови в Postgres 11.)

4. Или прочетете локален файл на клиента с метакомандата psql \copy . Вижте:

  • Как да актуализирам избрани редове със стойности от CSV файл в Postgres?
  • Как да използвам \copy в postgresql с pgadmin4


  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 INSERT FROM SELECT RETURNING ID

  2. PostgreSQL Създаване на база данни

  3. Изолация на транзакции в PostgreSQL

  4. Как да нулирате последователността за идентификатори на PostgreSQL таблици

  5. Проактивно наблюдение на PostgreSQL (ъгъл на Developer Studio/Advisors)