Python 从SQL server获取一百万条记录并保存到dataframe
我正在尝试从SQL server数据库获取数据(只是一个简单的SELECT*查询) 该表包含大约300-500万条记录。直接使用SSMS在SQL server上执行SELECT*大约需要11-15分钟 然而,当我通过Python连接并试图将数据保存到pandas数据帧中时,这需要花费很长时间。一个多小时 以下是我正在使用的代码:Python 从SQL server获取一百万条记录并保存到dataframe,python,sql-server,pandas,Python,Sql Server,Pandas,我正在尝试从SQL server数据库获取数据(只是一个简单的SELECT*查询) 该表包含大约300-500万条记录。直接使用SSMS在SQL server上执行SELECT*大约需要11-15分钟 然而,当我通过Python连接并试图将数据保存到pandas数据帧中时,这需要花费很长时间。一个多小时 以下是我正在使用的代码: import pymssql import pandas as pd startTime = datetime.now() ## instance a python
import pymssql
import pandas as pd
startTime = datetime.now()
## instance a python db connection object- same form as psycopg2/python-mysql drivers also
conn = pymssql.connect(server=r"xyz", database = "abc", user="user",password="pwd")
print ('Connecting to DB: ',datetime.now() - startTime )
stmt = "SELECT * FROM BIG_TABLE;"
# Excute Query here
df_big_table = pd.read_sql(stmt,conn)
一定有更好的方法吗?可能是并行处理或是快速获取数据的东西
我的最终目标是将此表从SQL server迁移到PostGres
我就是这样做的:
如果有任何其他方法可以达到我的最终目标,我欢迎你的建议 您是否尝试过使用pandas.read\u sql的“chunksize”选项?您可以将所有这些都放到一个数据帧中,并生成csv
如果需要更多时间,那么您可以使用pandas.read_sql作为迭代器将每个块分割成多个文件,然后在完成工作后将这些文件合并成一个文件并提交给postgres。您是否尝试过使用pandas.read_sql的“chunksize”选项?您可以将所有这些都放到一个数据帧中,并生成csv
如果需要更多的时间,那么你可以使用pandas.read_sql作为迭代器将每个块分割成多个文件,然后在完成工作后将这些文件合并成一个文件并提交给postgres。你看到了吗?@BalajiAmbresh,谢谢,我在这个链接上找到了它,但正如我所说的,我现在不需要使用授权工具。如果可能的话,我必须首先尝试开源。从manula的一些工作开始,这肯定是可能的。如果是这样的话,为什么不将数据从ms sql导出到csv,并将csv导入postgres?这个过程必须安排好,hecne编写python脚本以实现自动化。如果是这样的话,从python脚本调用db命令是比使用pandas更好的解决方案。你看到了吗?@BalajiAmbresh,谢谢,我在这个链接上发了言,但正如我所说的,我现在不必使用授权工具。如果可能的话,我必须首先尝试开源。从manula的一些工作开始,这肯定是可能的。如果是这样的话,为什么不将数据从ms sql导出到csv,并将csv导入postgres?这个过程必须安排好,hecne编写python脚本以实现自动化。如果是这样的话,从python脚本调用db命令比使用pandas更好。