Массовая загрузка в PostgreSQL с удаленного клиента

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

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

Спасибо.


person Jon    schedule 30.08.2010    source источник


Ответы (4)


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

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

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

$ psql -d dbname -h 192.168.1.1 -U uname < yourbigscript.sql
person Pablo Santa Cruz    schedule 30.08.2010

Вы можете использовать команду \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"
person Edwin Herrera    schedule 02.01.2013

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

person Matthew Wood    schedule 30.08.2010

Используйте команду \copy psql для загрузки данных в 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
person Animesh Raj Jha    schedule 25.02.2013