Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
295 views
in Technique[技术] by (71.8m points)

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

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...