postgresql COPY和CSV数据带双引号

前端之家收集整理的这篇文章主要介绍了postgresql COPY和CSV数据带双引号前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
示例CSV行:
"2012","Test User","ABC","First","71.0","","0","3","0.1","4.0","4.2","80.8","847"

“First”之后的所有值都是数字列.很多NULL值刚刚引用,对.

尝试COPY:

copy mytable from 'myfile.csv' with csv header quote '"';

NOPE:ERROR:类型为numeric的无效输入语法:“”

嗯,是的.它是一个空值.尝试2在COPY:

copy mytable from 'myfile.csv' with csv header quote '"' null '""';

NOPE:错误:CSV引用字符不能出现在NULL规范中

什么是小故事?在运行COPY之前,从文件中分出所有双引号?可以做到这一点,但我认为有一个正确的解决方案是什么是一个令人难以置信的常见问题.

虽然一些数据库产品将空字符串视为NULL值,但标准表示它们是不同的,Postgresql将它们视为不同.

如果您可以使用明确的表示生成CSV文件,那将是最好的.虽然您可以使用sed或某些东西将文件过滤到良好的格式,但另一个选项是将数据复制到文本列可以接受空字符串的表中,然后填充目标表. NULLIF函数可能有助于:http://www.postgresql.org/docs/9.1/interactive/functions-conditional.html#FUNCTIONS-NULLIF – 如果两个参数匹配,它将返回NULL,否则返回第一个值.所以,像NULLIF(txtcol,”):: numeric可能适用于你.

猜你在找的Postgre SQL相关文章