使用 psycopg2 copy_from() 在 Postgresql 中复制 NULL 值
COPY NULL values in Postgresql using psycopg2 copy_from()
这似乎是一个相当受欢迎的问题,但这里的所有答案都没有帮助我解决问题...我的 OS X 机器上有一个 Postgresql 9.5 table:
CREATE TABLE test (col1 TEXT, col2 INT)
以下函数使用 psycopg2 copy_from()
命令:
def test_copy(conn, curs, data):
cpy = BytesIO()
for row in data:
cpy.write('\t'.join([str(x) for x in row]) + '\n')
print cpy
cpy.seek(0)
curs.copy_from(cpy, 'test')
test_copy(connection, [('a', None), ('b', None)])
并且会导致这个错误:
ERROR: invalid input syntax for integer: "None"
CONTEXT: COPY test, line 1, column col2: "None"
STATEMENT: COPY test FROM stdin WITH DELIMITER AS ' ' NULL AS '\N'
我也试过 curs.copy_from(cpy, 'test', null='')
、curs.copy_from(cpy, 'test', null='NULL')
。非常感谢任何建议。
好的,经过反复试验,我找到了解决方案:
copy_from(cpy, 'test', null='None')
这似乎是一个相当受欢迎的问题,但这里的所有答案都没有帮助我解决问题...我的 OS X 机器上有一个 Postgresql 9.5 table:
CREATE TABLE test (col1 TEXT, col2 INT)
以下函数使用 psycopg2 copy_from()
命令:
def test_copy(conn, curs, data):
cpy = BytesIO()
for row in data:
cpy.write('\t'.join([str(x) for x in row]) + '\n')
print cpy
cpy.seek(0)
curs.copy_from(cpy, 'test')
test_copy(connection, [('a', None), ('b', None)])
并且会导致这个错误:
ERROR: invalid input syntax for integer: "None"
CONTEXT: COPY test, line 1, column col2: "None"
STATEMENT: COPY test FROM stdin WITH DELIMITER AS ' ' NULL AS '\N'
我也试过 curs.copy_from(cpy, 'test', null='')
、curs.copy_from(cpy, 'test', null='NULL')
。非常感谢任何建议。
好的,经过反复试验,我找到了解决方案:
copy_from(cpy, 'test', null='None')