我正在尝试使用psycopg2的copy_from()方法将python的StringIO对象中的数据加载到Postgres数据库表中。
我的copy_from在第一个记录本身失败,特别是对于具有空值(''没有引号)的特定(可空)整数列。我也尝试使用Python的无关键字代替''对于NULL值。 它抛出以下错误: DataError:整数的输入语法无效:"" 背景:复制,第1行,列:""
代码看起来像这样:
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, <table_name>)
此列是smallint列。
答案 0 :(得分:6)
默认情况下,COPY FROM
(和copy_from
)将NULL值编码为\N
。如果要使用空字符串表示NULL,则需要say so explicitly:
cursor.copy_from(table_data, table_name, null="")