我想将CSV数据传输到MySQL表。
我已阅读CSV,其中包含使用以下命令的所有类型的数据: 文件= pd.read_csv('abc.csv')
要使用以下命令传输到MySQL: file.to_sql(con = engine,name ='abc',if_exists ='replace',index = True,dtype = None,method = None)
这会将数据发送到MySQL表中,但它的数据类型为“文本”,“ bigint”,但我希望其为“ varchar”和“ int”。...
CSV有50列,因此,为解决此问题,我仅尝试了3个字段,其中dtype = {'index':sql_types.INT,'Employee ID':sql_types.INT,'Employee Name':sql_types.VARCHAR( 255)},就可以了!
现在我必须将剩余的47个字段添加到此dtype字典中,
所以我想知道,是否有任何方法可以自动转换数据类型而不提及其列名,例如..,当字段为数字时将其转换为INT,当字段为字母数字时将其转换为VARCHAR,当字段为日期类型将其转换为日期时间,这三行就足够了。
答案 0 :(得分:1)
阅读CSV文件后,您可以遍历cols并进行更改:
for col in list(df):
if df[col].dtype == 'O':
df[col] == df[col].astype(sql_types.VARCHAR(255))
elif df[col].dtype == 'int':
df[col] == df[col].astype(sql_types.INT)
这是假设您从某处导入了这些sql_types
,因为它们不是Pandas内置的。但是您说您可以使用它们。
如果您使用日期格式,则可以进行try / except转换为pd.datetime
,如果是,则将其保存为SQL日期类型。