我有一个postgres数据库,其中包含时间序列数据。数据库的大小约为1 GB。当前读取数据,这就是我所做的
import psycopg2
import pandas as pd
import pandas.io.sql as psql
conn = psycopg2.connect(database="metrics", user="*******", password="*******", host="localhost", port="5432")
cur = conn.cursor()
df = psql.read_sql("Select * from timeseries", conn)
print(df)
但这会将整个数据加载到内存中。现在我知道可以将数据库转储到 csv 文件,然后可以按此处建议的方式读取 csv 文件的 block How to read a 6 GB csv file with pandas
但对我来说这不是一个选择,因为数据库将不断变化,我需要即时读取它。是否有任何技术可以分块读取数据库内容或使用任何第三方库?
最佳答案
pd.read_sql()还有参数chunksize
,因此您可以从 SQL 表/查询中以 block 的形式读取数据:
for df in pd.read_sql("Select * from timeseries", conn, chunksize=10**4):
# process `df` chunk here...
关于python-3.x - 如何将大型数据库中的数据加载到 pandas 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50174683/