pandas to_sql只将第一行写入db

时间:2018-02-17 04:04:55

标签: python pandas pandas-to-sql

我使用以下代码将制表符分隔文件读入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')

对print的调用返回我期望的数据帧(即[798624行x 133列])并且对to_sql的调用没有失败,但在DB中我只看到一行具有正确列的数据。 。(如果之前已经创建了表,则结果相同)

1 个答案:

答案 0 :(得分:0)

好的,这是一个更新:

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