能否使用Vaex执行read_sql查询直接从数据库读取数据?
Vaex读取数据库数据的实现方案
Vaex目前没有原生提供类似Pandas read_sql的直接从数据库执行查询读取数据的方法,读取场景下的实现逻辑和你当前写入数据的逻辑一致,需要依赖Pandas作为中间转换层完成操作。
小数据量读取方案
如果查询结果数据量不大,可以直接全量读取后转换,示例代码如下:
import pandas as pd import vaex query = "select top 100 * from TABLE" # 先通过Pandas读取SQL查询结果 pd_df = pd.read_sql(query, redshift_conn) # 转换为Vaex DataFrame vx_df = vaex.from_pandas(pd_df)
大数据量读取优化方案
如果查询结果数据量较大,全量加载到Pandas会占用过高内存,可以通过分块读取的方式处理,避免内存溢出:
import pandas as pd import vaex query = "select * from BIG_TABLE" chunk_size = 10000 # 开启Pandas分块读取模式 chunks = pd.read_sql(query, redshift_conn, chunksize=chunk_size) # 逐块转换为Vaex格式并合并,不会占用过量内存 vx_df = vaex.from_pandas(chunks, chunk_size=chunk_size)
目前Vaex官方尚未推出原生SQL读写接口,不管是读还是写数据库,都需要先和Pandas格式做转换。
内容的提问来源于stack exchange,提问作者Jithendra Yenugula
相关产品推荐
相关产品推荐

