我有一个Python脚本,正在执行以下命令将CSV文件的内容复制到数据库中:
copy_query = "COPY table_name FROM STDIN DELIMITER '%s' CSV HEADER QUOTE '\"';" % (self.delimiter)
table_name
代表一个已创建的具有特定类型的表格。CSV文件中的数据不总是与列类型匹配。例如,CSV文件可能像这样:
"row1", 123, "2012-11-11"
"row2", 346, "2012-11-12"
"row3", \N, "2012-11-12"
如您所见,第2列应为int
类型,但由于第3行的数据与int
类型不匹配,整个操作失败了。有没有一种方法可以拒绝这一行?我更喜欢它填充适当类型的某些默认值,但彻底拒绝该行也可以。感谢您的帮助!
COPY
中转换或过滤行的方法。通常的解决方案是将其导入到一个带有所有“text”列的临时/未记录表中,然后执行“insert into ... select ...”进行转换。请参阅许多现有的相关答案。 - Craig Ringer