将大量数据集从 SQL 服务器导入 HDF5
Posted
技术标签:
【中文标题】将大量数据集从 SQL 服务器导入 HDF5【英文标题】:Import huge data-set from SQL server to HDF5 【发布时间】:2017-12-25 08:03:33 【问题描述】:我正在尝试将具有 8 列的约 1200 万条记录导入 Python。由于它的巨大尺寸,我的笔记本电脑内存不足以完成此操作。现在我正在尝试将 SQL 数据导入 HDF5 文件格式。如果有人可以共享从 SQL 查询数据并将其保存为 HDF5 格式的代码的 sn-p 代码,那将非常有帮助。我愿意使用任何其他更易于使用的文件格式。
我计划做一些基本的探索性分析,稍后可能会使用 pandas 创建一些决策树/线性回归模型。
import pyodbc
import numpy as np
import pandas as pd
con = pyodbc.connect('Trusted_Connection=yes',
driver = 'ODBC Driver 13 for SQL Server',
server = 'SQL_ServerName')
df = pd.read_sql("select * from table_a",con,index_col=['Accountid'],chunksize=1000)
【问题讨论】:
【参考方案1】:试试这个:
sql_reader = pd.read_sql("select * from table_a", con, chunksize=10**5)
hdf_fn = '/path/to/result.h5'
hdf_key = 'my_huge_df'
store = pd.HDFStore(hdf_fn)
cols_to_index = [<LIST OF COLUMNS THAT WE WANT TO INDEX in HDF5 FILE>]
for chunk in sql_reader:
store.append(hdf_key, chunk, data_columns=cols_to_index, index=False)
# index data columns in HDFStore
store.create_table_index(hdf_key, columns=cols_to_index, optlevel=9, kind='full')
store.close()
【讨论】:
@user3510503,很高兴它有帮助:) 伙计们,这段代码对于我的加载问题需要很长时间。有没有办法进一步加快这个过程?谢谢! @Mike_H,我认为首先你必须找出你的情况的瓶颈是什么...... 瓶颈是内存。 8GB。 @MaxU 或者你的意思是代码块的哪一部分运行时间最长? @Mike_H,是的,我的意思是你的代码中最慢的部分......它可能正在从数据库中读取或将块保存到 HDF5......以上是关于将大量数据集从 SQL 服务器导入 HDF5的主要内容,如果未能解决你的问题,请参考以下文章
我们如何将大型数据集从 Google BigQuery 导入 R?
如何像调度程序一样将大数据从 MongoDB 导入 SQL Server
如何删除大量数据 sql server2005 数据量在8千万左右??