2017-07-19 106 views
2

我正在嘗試導入~12萬條帶有8列的記錄到Python中。由於其巨大的尺寸,我的筆記本電腦內存不足以滿足此需求。現在我試圖將SQL數據導入HDF5文件格式。如果有人可以共享一段代碼來查詢SQL數據並將其以HDF5格式保存成塊,那將會非常有幫助。我打算使用任何其他易於使用的文件格式。從SQL服務器導入海量數據集到HDF5

我打算做一些基本的探索性分析,稍後可能會使用熊貓創建一些決策樹/線性迴歸模型。

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) 

回答

3

試試這個:

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() 
+0

謝謝你這麼多MaxU,這工作:d。 – user3510503

+0

@ user3510503,很高興幫助:) – MaxU