我正在尝试使用Pandas将数据从一个数据库复制到另一个数据库。
根据要求,表不存在,必须创建。
我发现pandas在目标位置将列创建为text
,如果值是null
。
例如,我使用参数chunksize
批量加载数据。第一块使用以下代码和其他代码在目标位置创建表
块追加到现有表。
for chunk in read_sql_query(sql,sqx,chunksize=csize):
chunk.to_sql(s_table,pg_engine,if_exists='append',index=False,schema=mySchema)
样本数据:
我在SQL表中的数据是
| integer | VARCHAR | somedatetime |
| ------ | ------- | ------------- |
| 1 | 'abc' | NULL |
| 2 | 'asbc' | NULL |
| 3 | 'abvv' | NULL |
....
| 550001 | 'abew' | '2011-08-31 06:00:00' |
| 550002 | 'abyuc' | '2011-08-31 06:00:00' |
第一个块在此处将datetime
列创建为text
。我需要使用与目标数据类型相似的数据类型来创建目标表。
有什么解决方法吗? 我的想法是在推入大块之前创建一个具有确切结构作为源的空表,这可能吗?
注意:
我已经在下面提到了使用硬编码管理dtypes
的帖子。我的问题是从SQL Table获取类似的dtypes
。