我想使用psycopg2 中可用的复制命令将表行从旧数据库复制到新数据库中。我以为我可以通过StringIO重定向,如下所示
io = StringIO.StringIO('')
whereClause = " SELECT %s FROM %s WHERE home_city='%s' "%(
','.join(columns), tablename, city,
)
old_db_cursor.execute(whereClause)
rows = old_db_cursor.fetchall()
logger.info('Should get %d rows',len([r for r in rows]))
sql = 'COPY (%s) to STDOUT'%(whereClause,)
old_db_cursor.copy_expert( sql, io, )
new_db_cursor.copy_from( io, tablename, columns=columns)
new_db_connection.commit()
日志显示我应该得到 30,000 行。但是尽管没有错误消息,但我没有得到新的行。对于它的价值,检查io.read()
显示它的长度为零。
我怎样才能使这项工作?