如何在 PostgreSQL 中转义管道字符('|')
How to escape pipe character ('|') in PostgreSQL
所以我正在尝试将一系列管道分隔文件导入 PgAdmin III(使用 PostgreSQL 9.5 数据库)。
我最后得到了错误:
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,虽然我可能做错了...
我已经尝试用“/|”替换字段中的竖线字符和“//|”,但到目前为止,两者都会导致与上述相同的错误消息。
非常感谢,如果您需要更多信息,请告诉我!
您需要引用整个列值才能使用分隔符作为字段数据的一部分。例如:
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
中找到详细信息
所以我正在尝试将一系列管道分隔文件导入 PgAdmin III(使用 PostgreSQL 9.5 数据库)。
我最后得到了错误:
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,虽然我可能做错了...
我已经尝试用“/|”替换字段中的竖线字符和“//|”,但到目前为止,两者都会导致与上述相同的错误消息。
非常感谢,如果您需要更多信息,请告诉我!
您需要引用整个列值才能使用分隔符作为字段数据的一部分。例如:
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
中找到详细信息