pandas to_sql 只将第一行写入数据库

pandas to_sql only writing first row to db

我正在使用以下代码将制表符分隔的文件读入 postgres 数据库

enginestring = cfg.dbuser+":"+cfg.dbpwd+"@"+server.local_bind_host+":"+str(server.local_bind_port)+"/"+cfg.dbname
engine = create_engine('postgresql://' + enginestring)

rows = []
for line in smart_open.smart_open(key):
    ln = str(line.decode('utf-8'))
    fields = ln.split('\t')
    rows.append(fields)

df = pd.DataFrame(rows, columns=cfg.df_colheaders)
print(df.head)
df.to_sql(name=table_name, con=engine, if_exists='append')

打印 returns 我期望的数据帧的调用(即 [798624 行 x 133 列])和对 to_sql 的调用没有失败,但在数据库中我只看到一行具有正确列的数据...(如果之前创建了 table,结果相同)

好的,这是更新:

  • 我通过剥离 EOL 字符解决了单行问题(可以在最后插入的字段末尾看到 ¶)
  • 然后我得到了空表,所以我将 chunksize 参数添加到 to_sql - 不确定为什么它没有失败而不是继续,但现在一切正常