2014-04-08 22 views
5

Một khung dữ liệu Pandas có thể được chuyển đổi thành tệp hdf5 như thế này;chuyển đổi python sqlite db sang hdf5

df.to_hdf('test_store.hdf','test',mode='w')

Tôi có một file db sql trong đó có được chuyển đổi vào một tập tin hdf5 và sau đó tôi sẽ đọc các tập tin hdf5 qua gấu trúc sử dụng pd.read_hdf.

Nhưng trước tiên làm cách nào để chuyển đổi một db sql python thành tệp hdf5?

CHỈNH SỬA:

Tôi biết sử dụng phương pháp .read_sql trong gấu trúc. Nhưng tôi muốn chuyển đổi db sang hdf5 trước.

Trả lời

4

Điều này thật đáng ngạc nhiên: Sử dụng gấu trúc!

gấu trúc hỗ trợ reading data directly from a SQL database vào một DataFrame. Một khi bạn đã có DataFrame, bạn có thể làm với nó như bạn muốn.

dụ ngắn, lấy from the docs:

import sqlite3 
from pandas.io import sql 
# Create your connection. 
cnx = sqlite3.connect('mydbfile.sqlite') 

# read the result of the SQL query into a DataFrame 
data = sql.read_sql("SELECT * FROM data;", cnx) 

# now you can write it into a HDF5 file 
data.to_hdf('test_store.hdf','test',mode='w') 
+0

Tôi biết phương thức '.read_sql '. Nhưng tôi đang xử lý các vấn đề kích thước ở đây và do đó muốn chuyển đổi db sang hdf5 đầu tiên. – richie

+0

@richie Tôi đã thêm bước cuối cùng để chuyển đổi thành HDF5. Tôi nghĩ rằng đó là hiển nhiên, đưa ra câu hỏi của bạn. – Carsten

1

Có xem xét này ---

http://www.tutorialspoint.com/sqlite/sqlite_limit_clause.htm

Ý tưởng sẽ được lặp đi lặp lại một truy vấn select * from table và giới hạn kết quả với một tăng bù lại. Viết kết quả vào kho dữ liệu hdf5 như hình trên. Đầu tiên đếm số lượng các mục nhập với một số select count(*) from table và sau đó chia số lần lặp lại thành các khối quản lý này. ví dụ: nếu có 4 triệu bản ghi 200.000 mỗi lần và tăng số lượng từ 0, 200000, 400000, v.v ...

Tôi cần thực hiện việc này với tệp sqlite rất lớn. sẽ báo cáo nếu nó hoạt động.

Các vấn đề liên quan