Массовая загрузка в PostgreSQL с удаленного клиента - PullRequest
1 голос
/ 30 августа 2010

Мне нужно массово загрузить большой файл в PostgreSQL.Обычно я использую команду COPY, но этот файл необходимо загрузить с удаленного клиентского компьютера.С помощью MSSQL я могу установить локальные инструменты и использовать bcp.exe на клиенте для подключения к серверу.

Есть ли эквивалентный способ для PostgreSQL?Если нет, то каков рекомендуемый способ загрузки большого файла с клиентского компьютера, если я не могу сначала скопировать файл на сервер?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 30 августа 2010

COPY команда поддерживается в PostgreSQL Protocol v3.0 (Postgresql 7.4 или новее).

Единственное, что вам нужно использовать COPYс удаленного клиента - клиент с поддержкой libpq , например утилита командной строки psql.

С запуска удаленного клиента:

$ psql -d dbname -h 192.168.1.1 -U uname < yourbigscript.sql
2 голосов
/ 02 января 2013

Вы можете использовать команду \copy из инструмента psql, например:

psql -h IP_REMOTE_POSTGRESQL -d DATABASE -U USER_WITH_RIGHTS -c "\copy 
  TABLE(FIELD_LIST_SEPARATE_BY_COMMA) from 'FILE_IN_CLIENT_MACHINE(MAYBE IN THE SAME 
DIRECTORY)' with csv header"
1 голос
/ 31 августа 2010

Если у вас есть какой-то клиент для выполнения запроса, вы можете использовать форму COPY FROM STDIN команды COPY: http://www.postgresql.org/docs/current/static/sql-copy.html

0 голосов
/ 26 февраля 2013

Используйте команду psql \copy для загрузки данных в sql:

$ psql -h <IP> -p <port> -U <username> -d <database>

database# \copy schema.tablename from '/home/localdir/bulkdir/file.txt' delimiter as '|' 

database# \copy schema.tablename from '/home/localdir/bulkdir/file.txt' with csv header
...