Как я могу скопировать из локального файла в удаленную БД в PostgreSQL? [закрыто]

9

Я новичок в PSQL и нужна помощь. Как я могу загрузить локальный CSV в удаленную БД?

Я использую следующую команду

\COPY test(user_id, product_id, value) 
      FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER;

но это ищет файл на удаленной БД, в то время как мне нужно сделать это на моем локальном ПК.

user22149
источник
4
\copyчитает локальный файл (это psqlкоманда и может использоваться только изнутри psql). COPYоднако (обратите внимание на отсутствие ``) будет читать файл на сервере.
a_horse_with_no_name
так нет пути к этому? мне нужно скопировать файл на удаленный сервер?
user22149
есть ли разница в копировании и \ копировании? извините, я действительно новичок в psql, знаю только оракула, там я могу сделать это без проблем
user22149
Разница в том, что один читает файл на сервере, а другой читает файл на клиенте. Очевидно, что чтение файла на сервере будет быстрее.
a_horse_with_no_name
1
@ user22149 Используйте буквенную вкладку или E'\t'. Но вкладка должна быть по умолчанию, если вы все равно не указали разделитель.
Крейг Рингер,

Ответы:

5

Здесь есть две возможности.

  1. Если вы используете psql, то \ copy - это правильный способ сделать то, что вы упомянули.

  2. Если вы используете клиентскую программу, которую вы создали, то вам нужно

    COPY FROM STDIN.....

А затем введите файл (см. Документацию по команде COPY .

Команда COPY - немного странный зверь. Это единственная команда, которую PostgreSQL в настоящее время поддерживает из Quel, и поэтому она нестандартна и основана на чем-то другом, нежели остальные команды. По этой причине важно внимательно прочитать документы по этой команде.

Крис Траверс
источник