Postgresql加载带有新行字符的csv文件
我对这个非常有趣的博客是新手。这就是我的问题:我必须在postgresql表中加载一个包含三列(field1、field2和field3)的csv文件。 在field1列中包含的字符串中有新行字符。 我使用sql语句: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”; 但它向我报告了一个错误 如何删除换行符?如果通过引用值正确转义换行符,这应该不是问题 如果您
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