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



所以我试图将一系列管道分隔的文件导入到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;

我一直在参考词汇结构文档,尽管我可能做错了。。。

我已经尝试用"/|"one_answers"//|"替换字段中的管道字符,但到目前为止,这两个字符都会导致与上面相同的错误消息。

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

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

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

您可以在COPY命令的手册中找到详细信息

最新更新