如何在PostgreSQL中转义管道字符(' |')

时间:2016-04-04 21:18:49

标签: postgresql import special-characters postgresql-9.5

所以我试图将一系列管道分隔文件导入PgAdmin III(使用PostgreSQL 9.5 DB)。

我最终得到了错误:

ERROR: extra data after last expected column
SQL state: 22P04

基本上这条线有25根柱应该有17根......为什么?好吧,我发现在几个字段中有管道(" |")字符。

我使用以下命令导入:

START TRANSACTION;
copy drugs FROM 'path/to/source_file.rrf' (DELIMITER '|', FORMAT TEXT);
COMMIT;

我一直指的是词汇结构documentation,虽然我可能做错了......

我已经尝试用' / |'替换字段中的管道字符。和' // |',但到目前为止,两者都会产生与上述相同的错误消息。

非常感谢,如果您需要更多信息,请告诉我们!

1 个答案:

答案 0 :(得分:1)

您需要引用整个列值以使用分隔符作为字段数据的一部分。例如:

filed_one|field_two|with_a_delimiter_inside|field_three

应转换为

filed_one|"field_two|with_a_delimiter_inside"|field_three

"filed_one"|"field_two|with_a_delimiter_inside"|"field_three"

其他选项是使用反斜杠来转义分隔符。例如:

filed_one|field_two\|with_a_delimiter_inside|field_three

您可以在manual on COPY command

中找到详细信息