Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql加载带有新行字符的csv文件_Postgresql_Csv_Newline - Fatal编程技术网

Postgresql加载带有新行字符的csv文件

Postgresql加载带有新行字符的csv文件,postgresql,csv,newline,Postgresql,Csv,Newline,我对这个非常有趣的博客是新手。这就是我的问题:我必须在postgresql表中加载一个包含三列(field1、field2和field3)的csv文件。 在field1列中包含的字符串中有新行字符。 我使用sql语句: COPY test(regexp\u replace(field1,E'[\\n\\r]+',''g'), 字段2、字段3) 来自带分隔符“|”的“D:\zzz\aaa20.csv”; 但它向我报告了一个错误 如何删除换行符?如果通过引用值正确转义换行符,这应该不是问题 如果您

我对这个非常有趣的博客是新手。这就是我的问题:我必须在postgresql表中加载一个包含三列(field1、field2和field3)的csv文件。 在field1列中包含的字符串中有新行字符。 我使用sql语句:

COPY test(regexp\u replace(field1,E'[\\n\\r]+',''g'),
字段2、字段3)
来自带分隔符“|”的“D:\zzz\aaa20.csv”;
但它向我报告了一个错误


如何删除换行符?

如果通过引用值正确转义换行符,这应该不是问题

如果您的数据是损坏的CSV文件,带有未替换的换行符,则必须进行一些预处理。如果愿意授予数据库用户在数据库服务器上执行程序的权限,可以使用

COPY mytable FROM PROGRAM 'demangle D:\zzz\aaa20.csv' (FORMAT 'csv');

这里,
demangle
是一个程序或脚本,用于读取文件、修复数据并将其输出到标准输出。由于您在Windows上,您可能无法访问可用于此目的的工具,如
sed
awk
,您可能需要编写自己的工具。

因此,这是
COPY
命令的语法:

COPY table_name [ ( column_name [, ...] ) ]
FROM { 'filename' | STDIN }
[ [ WITH ] ( option [, ...] ) ]
您只能添加可选的列名列表,不能添加函数调用(
regexp\u replace
),也不能添加其他复杂结构


您可以创建一些时态表,将数据导入其中,然后使用ordinal
INSERT…SELECT
query将数据复制到表中。

它报告了什么错误?这是错误:语法错误在“(”-SQL状态:42601-字符:180