【发布时间】:2019-04-22 06:50:36
【问题描述】:
当使用 pyodbc 并且主要是函数 pandas.read_sql(query,pyodbc_conn) 从 SQL Server DB 加载超过 1000 万条记录时,Pandas 变得异常缓慢。以下代码最多需要 40-45 分钟才能从 SQL 表中加载 10-15 百万条记录:Table1
有没有更好更快的方法将SQL Table读入pandas Dataframe?
import pyodbc
import pandas
server = <server_ip>
database = <db_name>
username = <db_user>
password = <password>
port='1443'
conn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';PORT='+port+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = conn.cursor()
data = pandas.read_sql("select * from Table1", conn) #Takes about 40-45 minutes to complete
【问题讨论】:
-
检查块
-
rows = cursor.execute("select * from Table1").fetchall()是否需要类似的时间? -
@W-B 块对时间问题没有帮助。阅读仍然需要很多时间。
-
@GordThompson 谢谢。我尝试使用 execute() 和 fetchall() 需要相当长的时间来读取 pyodbc 游标对象,但需要永远将其转换为 pandas Dataframe。请看link
标签: python sql-server pandas pyodbc