如前所述,我在 Python 中创建了一个数据集合(40k 行,5 列),我想将其插入 SQL Server 表中。
通常,在 SQL 中我会做一个'select * into myTable from dataTable'
调用来执行插入,但是 pandas 数据框中的数据显然使这变得复杂。
我并不正式反对使用 SQLAlchemy(尽管更愿意避免再次下载和安装),但更愿意在 Python 中本地执行此操作,并使用 pyodbc 连接到 SSMS。
有没有一种直接的方法可以避免循环(即逐行插入)?
如图所示这个答案 https://stackoverflow.com/a/34551914/2144390我们可以转换一个名为df
通过执行以下操作进入元组列表list(df.itertuples(index=False, name=None)
所以我们可以将其传递给executemany
无需(明确)循环每一行。
crsr = cnxn.cursor()
crsr.fast_executemany = True
crsr.executemany(
"INSERT INTO #tablename (col1, col2) VALUES (?, ?)",
list(df.itertuples(index=False, name=None))
)
crsr.commit()
这是您将得到的“本机”,但如果 DataFrame 包含 pyodbc 无法识别的 pandas 数据类型(它需要 Python 类型作为参数值),则可能会导致错误。使用 SQLAlchemy 和 pandas 可能会更好to_sql
method.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)