【发布时间】:2022-01-24 03:20:55
【问题描述】:
在 Azure Databricks 内的笔记本中,我使用 pandas.DataFrame.to_sql 将数据从 CSV 文件加载到 Azure SQL 数据库表。 CSV 文件和 SQL 表中的列顺序完全相同。但他们的名字不同。
问题:pandas.DataFrame.to_sql 是否仍会将数据正确加载到相应的列?例如,如果 CSV 文件具有列 F_Name、L_Name、Age、Gender - 并且 SQL 表的列(按相同顺序)为 fname、lname、person_age、@987654331 @,数据是否仍以相同的顺序加载(即CSV文件中的名字列值将转到sql表的第一个名称列,CSV文件的姓氏列值将转到sql表的姓氏列等...)。
备注:csv文件大约有150列,SQL表的列数完全相同。 csv 文件定期从外部源加载,具有相同数量的列以完全相同的顺序,但列名有时非常轻微 column1 与 coluumn_1, .... 等等。所以我们无法控制在他们的列名上(尽管顺序总是相同的名字,姓氏,年龄,......)
代码 sn-p
import pandas as pd
import sqlalchemy as sq
.............
pandasDFrame = pd.read_csv('/dbfs/FileStore/tables/MyFile.csv', header='infer')
pandasDFrame .to_sql(name='MySQLTable', con=engine, if_exists='replace', method='multi', chunksize=1000, index=False,\
dtype={'fname': sq.VARCHAR(15),\
'lname': sq.VARCHAR(15),\
`person_age`: sq.varchar(3),\
`sex` : sq.varchar(10)})
【问题讨论】:
-
我想是的,是的。
-
列名必须匹配源和目标。事实上,你可以自己测试它。你的代码会发生什么?
标签: python pandas dataframe csv azure-sql-database