postgresql copy from 文件,文件字段包含双引号怎么处理?

文件以逗号隔开a,b,c 3个字段 但是现在的文件是"a","b,v","c"格式。怎么处理?copy命令只能用单个分隔符 不能用多个。单个逗号分隔第二种格式会出现4个字段。、

可以使用类似这样的命令进行导入:

copy target_table_name (field_1, field_2, field_3)
from 'C:\sourceData.txt'
with (
FORMAT csv,
DELIMITER ',',
escape '\',
header true,
quote '"',
encoding 'UTF8')

这里, with后面括号中跟的是导入参数设置:

format指定导入的文件格式为csv格式

delimiter指定了字段之间的分隔符号位逗号

escape指定了在引号中的转义字符为反斜杠,这样即使在引号字串中存在引号本身,也可以用该字符进行转义,变为一般的引号字符,而不是字段终结

header true:指定文件中存在表头。如果没有的话,则设置为false

quote指定了以双引号作为字符串字段的引号,这样它会将双引号内的内容作为一个字段值来进行处理

encoding指定了文件的编码格式为utf8, 如果是别的格式则修改为适当的编码格式.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-04
可以使用类似这样的命令进行导入:

1
2
3
4
5
6
7
8
9

copy target_table_name (field_1, field_2, field_3)
from 'C:\sourceData.txt'
with (
FORMAT csv,
DELIMITER ',',
escape '\',
header true,
quote '"',
encoding 'UTF8')

这里, with后面括号中跟的是导入参数设置:
format指定导入的文件格式为csv格式
delimiter指定了字段之间的分隔符号位逗号
escape指定了在引号中的转义字符为反斜杠,这样即使在引号字串中存在引号本身,也可以用该字符进行转义,变为一般的引号字符,而不是字段终结
header true:指定文件中存在表头。如果没有的话,则设置为false
quote指定了以双引号作为字符串字段的引号,这样它会将双引号内的内容作为一个字段值来进行处理
encoding指定了文件的编码格式为utf8, 如果是别的格式则修改为适当的编码格式.
相似回答