相关疑难解决方法(0)

使用sqlalchemy的python pandas to_sql:如何加快导出到MS SQL?

我有一个大约155,000行和12列的数据帧.如果我使用dataframe.to_csv将其导出到csv,则输出为11MB文件(即时生成).

但是,如果我使用to_sql方法导出到Microsoft SQL Server,则需要5到6分钟!没有列是文本:只有int,float,bool和日期.我见过ODBC驱动程序设置nvarchar(max)的情况,这会减慢数据传输速度,但这不是这种情况.

有关如何加快出口流程的任何建议?导出11 MB数据需要6分钟,这使得ODBC连接几乎无法使用.

谢谢!

我的代码是:

import pandas as pd
from sqlalchemy import create_engine, MetaData, Table, select
ServerName = "myserver"
Database = "mydatabase"
TableName = "mytable"

engine = create_engine('mssql+pyodbc://' + ServerName + '/' + Database)
conn = engine.connect()

metadata = MetaData(conn)

my_data_frame.to_sql(TableName,engine)
Run Code Online (Sandbox Code Playgroud)

python sql sqlalchemy pyodbc pandas

21
推荐指数
7
解决办法
2万
查看次数

pyodbc 到 sqlalchemy 连接

我正在尝试将 pyodbc 连接切换到 sqlalchemy。工作的 pyodbc 连接是:

import pyodbc
con = 'DRIVER={ODBC Driver 11 for SQL Server};SERVER=server.com\pro;DATABASE=DBase;Trusted_Connection=yes'
cnxn = pyodbc.connect(con)
cursor = cnxn.cursor()
query = "Select * from table"
cursor.execute(query)
Run Code Online (Sandbox Code Playgroud)

我试过:

from sqlalchemy import create_engine
dns = 'mssql+pyodbc://server.com\pro/DBase?driver=SQL+Server'
engine = create_engine(dns)
engine.execute('Select * from table').fetchall()
Run Code Online (Sandbox Code Playgroud)

基于: http: //docs.sqlalchemy.org/en/latest/core/engines.html

并且:使用 SQLAlchemy 时 pandas.read_sql() 比 pyodbc 慢得多

(尝试使用 Trusted_Connection = Yes 建立连接)

但我收到消息:

操作错误:(pyodbc.OperationalError) ('08001','[08001] [Microsoft][ODBC SQL Server 驱动程序][DBNETLIB]不存在 SQL Server 服务,无法访问。 (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).(53)') (此错误的背景位于: http: …

python sqlalchemy pyodbc pandas pandas-to-sql

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

pandas ×2

pyodbc ×2

python ×2

sqlalchemy ×2

pandas-to-sql ×1

sql ×1