赞
踩
I am trying to load data from a StringIO object of python into a Postgres database table using psycopg2's copy_from() method.
My copy_from fails on the first record itself specifically for a particular (nullable) integer column which has null value ('' without quotes). I have also tried using Python's None keyword instead of '' for NULL values.
It throws me the following error:
DataError: invalid input syntax for integer: ""
CONTEXT: COPY , line 1, column : ""
The code looks something like this:
table_data = StringIO.StringIO()
# Populate the table_data variable with rows delimited by \n and columns delimited by \t
cursor = db_connection.cursor()
cursor.copy_from(table_data, )
This column is a smallint column.
解决方案
By default, COPY FROM (and copy_from) encode a NULL value as \N. If you want to use the empty string to mean NULL, you need to say so explicitly:
cursor.copy_from(table_data, table_name, null="")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。