PostgreSQL COPY csv 包括引号

The*_*age 5 csv postgresql import copy

这是一个非常简单的问题,我正在使用 psql 终端命令 COPY,如下所示

COPY tbname FROM '/tmp/file.csv'
delimiter '|' csv;
Run Code Online (Sandbox Code Playgroud)

但是,此 file.csv 包含数据,例如

random|stuff|32"
Run Code Online (Sandbox Code Playgroud)

random|other "stuff"|15
Run Code Online (Sandbox Code Playgroud)

我尝试使用双引号来转义 Postgres 网站建议的引号

random|stuff|32""
random|other ""stuff""|15
Run Code Online (Sandbox Code Playgroud)

这似乎完全删除了我不想要的引号。有没有办法让导入只将这些引号视为常规字符,以便它们像在 csv 文件中一样出现在数据库中?

mli*_*nth 7

根据文档,默认引号是“,因此您需要提供具有不同符号的 QUOTE 参数。引号必须是单个单字节字符。

COPY tbname FROM '/tmp/file.csv'
delimiter '|' QUOTE '}' csv; -- use a symbol you know does not appear in your file.
Run Code Online (Sandbox Code Playgroud)

  • 如果您无法确定任何符号不存在,那么看到解决方案会很棒。 (4认同)