我有一个CSV文件。如果文件和数据库在同一台服务器上,我可以使用下面的命令将数据插入数据库:
psql -h localhost -d local_mydb -U myuser -c "copy mytable (column1, column2) from '/path/to/local/file.csv' with delimiter as ','"
但文件在本地服务器上,而数据库在另一台(远程)服务器上。
如果我尝试为远程服务器执行此操作,请使用以下命令:
psql -h remotehost -d remote_mydb -U myuser -c "copy mytable (column1, column2) from '/path/to/local/file.csv' with delimiter as ','"
我得到一个权限被拒绝的异常。
在没有超级用户权限的情况下,如何将数据从本地文件插入到远程服务器上的数据库中?
3条答案
按热度按时间mmvthczy1#
psql的
\copy
(注意反斜杠)允许您向/从远程数据库进行复制,并且不需要超级用户权限。https://www.postgresql.org/docs/current/sql-copy.html
wecizke32#
您可以通过STDIN输入文件。从PostgreSQL COPY documentation ...
当指定STDIN或STDOUT时,数据通过客户端和服务器之间的连接传输。
我使用
FROM PROGRAM
是不正确的。它和FROM 'filename'
有相同的警告。服务器执行程序,而不是客户机。当PROGRAM被指定时,* 服务器执行给定的命令 *,并从程序的标准输出读取,或写入程序的标准输入。命令必须从服务器的Angular 指定,并且可由PostgreSQL用户执行。
kpbwa7wx3#
对于本地数据库,只需用途:
对于服务器(远程数据库),您必须添加\: