![](/img/trans.png)
[英]Postgresql Copy - How to treat empty string as null while exporting data from postgresql using copy command
[英]In PostgreSQL, how to insert data with COPY command?
使用 PostgreSQL 数据库运行 1 个项目 NodeJs 时出现问题。 尝试使用COPY
命令在 pgAdmin 中插入数据时出现错误。
COPY beer (name, tags, alcohol, brewery, id, brewery_id, image) FROM stdin;
Bons Voeux blonde 9.5 Brasserie Dupont 250 130 generic.png
要点中的数据:
这个错误:
ERROR: syntax error at or near "Bons"
SQL state: 42601
Character: 1967
COPY tbl FROM STDIN;
pgAdmin 不支持。
你会得到一个简单的语法错误,因为 Postgres 将数据作为 SQL 代码获取。
四种可能的解决方案:
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) 语法。
您可以使用--inserts
使用pg_dump
生成数据。 看:
使用psql
在命令行上调用您的脚本。 作为系统用户postgres
:
psql -f beer.sql -U my_login_role -d db_name
如果默认值可以,可以省略数据库 ( -d
) 和登录角色 ( -U
表示“用户”)。 语法示例:
确保默认text
格式有一个数据结束标记 ( \.
)。 (你有那个。) 手册:
数据的结尾可以由仅包含反斜杠句点 (
\.
) 的单行表示。 从文件中读取时不需要数据结束标记,因为文件结尾非常好; 只有在使用 3.0 之前的客户端协议将数据复制到客户端应用程序或从客户端应用程序复制数据时才需要它。
COPY
将您的数据移动到服务器上的单独文件中,例如“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 中是新的。)
\copy
在任何客户端上使用psql 元命令\copy
读取客户端本地文件。 看:
第一步是在 pgAdmin 上创建数据库belgianbeers
。
然后打开提示符并运行psql -U postgres -d belgianbeers -a -f beers.sql
此命令行运行 e 更新数据库表。
注意: -U postgres
= 指定postgres
为用户名
我的解决方案:将 SQL 文件放在您的根目录中,例如C:\
。
例如,我的数据库被称为cities
,我的 SQL 文件是cidade.sql
。
在 PostgreSQL 目录中的 BIN 文件夹中打开cmd
并键入:
psql -U postgres -d cities < C:\cidade.sql
psql
的参数是:
-U [user]
-d [database]
系统将提示您输入密码。 不要忘记检查psql
是否在您的环境变量%PATH%
中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.