DolphinDB中如何按Partition逐步保存csv文件?

在dolphindb的一个分布式分区表中,保存了约100多G的数据,现在想要把这些数据导出成csv文件,我知道有saveText的方法:

db = database("dfs://db1")
t = select * from db.loadTable("tb1")
t.saveText("mydata.csv")

但是因为内存有限,无法全量读取并导出。我想知道是否有办法,按照分区逐个导出,将内存的使用控制在可用范围内,并且最后的结果能拼接成单个csv文件?

请先 登录 后评论

1 个回答

logger

DolphinDB database的saveText函数支持追加数据,只要设置参数append=true即可。
因此可以把分区数据一个个加载到内存,然后追加保存到csv文件。下面的例子是一个按月分区的数据库,用pipeline连续执行:

login("admin","123456")
v = 2015.01M..2016.12M
def queryData(m){
    return select * from loadTable("dfs://db1", "tb1") where TradingTime between datetime(date(m)) : datetime(date(m+1))
}
def saveData(tb){
    tb.saveText("/hdd/hdd0/data/gtatest.csv",',', true)
}
pipeline(each(partial{queryData}, v),saveData)



请先 登录 后评论