【问题标题】:Python pandas into azure SQL, bulk insertPython pandas 到 azure SQL,批量插入
【发布时间】:2020-08-31 10:30:41
【问题描述】:

如何将 python 数据帧的批量插入到相应的 azure SQL 中。 我看到 INSERT 适用于单个记录:

INSERT INTO XX ([Field1]) VALUES (value1);

如何将数据框的全部内容插入 Azure 表?

谢谢

【问题讨论】:

  • 您可以将数据帧写入csv文件,然后使用sql命令BULK INSERT插入数据。
  • 谢谢,BULK INSERT 使用 MS AZURE 数据进行操作。如何将要插入的数据表传递给 BULK INSERT 命令?
  • 谢谢,BULK INSERT 使用 MS AZURE 或文件中可用的数据进行操作,我的数据位于超出常规 csv 文件大小的数据框中
  • 可以使用pandas.DataFrame.to_sql插入数据:pandas.pydata.org/pandas-docs/stable/reference/api/…

标签: python-3.x azure-sql-database


【解决方案1】:

根据我的测试,我们也可以使用to_sql向Azure sql插入数据

例如

from urllib.parse import quote_plus

import numpy as np
import pandas as pd
from sqlalchemy import create_engine, event

import pyodbc
# azure sql connect tion string
conn ='Driver={ODBC Driver 17 for SQL Server};Server=tcp:<server name>.database.windows.net,1433;Database=<db name>;Uid=<user name>;Pwd=<password>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;'
quoted = quote_plus(conn)
engine=create_engine('mssql+pyodbc:///?odbc_connect={}'.format(quoted))

@event.listens_for(engine, 'before_cursor_execute')
def receive_before_cursor_execute(conn, cursor, statement, params, context, executemany):
    print("FUNC call")
    if executemany:
        cursor.fast_executemany = True

#insert 
table_name = 'Sales'
# For test, I use a csv file to create dataframe  
df = pd.read_csv('D:\data.csv')
df.to_sql(table_name, engine, index=False, if_exists='replace', schema='dbo')

#test after inserting
query = 'SELECT * FROM {table}'.format(table=table_name )
dfsql = pd.read_sql(query, engine)
print(dfsql)

【讨论】:

  • 谢谢,不幸的是它会产生错误 return self.dbapi.connect(*cargs, **cparams) pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager]未找到数据源名称且未指定默认驱动程序 (0) (SQLDriverConnect)')
  • 有机会与您预约私人会议吗? ($$)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
相关资源
最近更新 更多