【发布时间】:2022-01-09 03:18:41
【问题描述】:
我正在尝试使用 Pandas 数据框中的更新信息更新 SQL 表。
我有大约 100,000 行要迭代,这需要很长时间。任何方式我都可以让这段代码更有效率。我什至需要截断数据吗?大多数行可能是相同的。
conn = pyodbc.connect ("Driver={xxx};"
"Server=xxx;"
"Database=xxx;"
"Trusted_Connection=yes;")
cursor = conn.cursor()
cursor.execute('TRUNCATE dbo.Sheet1$')
for index, row in df_union.iterrows():
print(row)
cursor.execute("INSERT INTO dbo.Sheet1$ (Vendor, Plant) values(?,?)", row.Vendor, row.Plant)
更新:这就是我最终要做的。
params = urllib.parse.quote_plus(r'DRIVER={xxx};SERVER=xxx;DATABASE=xxx;Trusted_Connection=yes')
conn_str = 'mssql+pyodbc:///?odbc_connect={}'.format(params)
engine = create_engine(conn_str)
df = pd.read_excel('xxx.xlsx')
print("loaded")
df.to_sql(name='tablename',schema= 'dbo', con=engine, if_exists='replace',index=False, chunksize = 1000, method = 'multi')
【问题讨论】:
-
pd.to_sql?也设置块大小。
-
那种。我最终弄清楚并更新了问题。感谢您的帮助和时间。
标签: python sql sql-server pandas