saveText

语法

saveText(obj, filename, [delimiter=','], [append=false], [header=true])

参数

obj 可以是表、矩阵、向量或 SQL 元代码。obj 取 SQL 元代码时,系统将分配多个线程并发读取数据,并通过独立的写线程将数据写入文件。否则,数据查询和写入将由当前 worker 处理。

filename 是在服务器端输出文件的绝对路径或相对路径。

delimiter 是表中的列分隔符。系统的默认分隔符是逗号(,)。

append 是一个布尔值,表示输出文件能够被追加。默认值为 false。

header 是一个布尔值,表示 obj 为数据表时,是否在文件中保留列名。默认值为 true。
注: 向已存在的非空文件中追加数据(即 append = true 时),该参数将失效。

详情

将 DolphinDB 变量或 SQL 读取的数据存为磁盘上的文本文件。与 saveTable 命令相比,saveText 需要更多的磁盘空间且耗时更久。

例子

例1.

n=20000000
syms=`IBM`C`MS`MSFT`JPM`ORCL`GE`EBAY`GOOG`FORD`GS
timestamp=09:30:00+rand(18000,n)
sym=rand(syms,n)
qty=100*(1+rand(100,n))
price=5.0+rand(100.0,n)
t1=table(timestamp,sym,qty,price);

timer saveText(t1, "/home/DolphinDB/trades.txt");
# output
Time elapsed: 191488 ms

例2.

n=100
t1=table(1..n as id, rand(1000, n) as x)
saveText(t1, "/home/DolphinDB/t.csv",,1)
t2=table((n+1)..(2*n) as id, rand(1000, n) as x)
saveText(t2, "/home/DolphinDB/t.csv",,1)
t = loadText("/home/DolphinDB/t.csv")
select count(*) from t;
# output
200

例3. 将分布式表的数据存储为文本文件。

if(existsDatabase("dfs://testdb")){
  dropDatabase("dfs://testdb")
}
n=3000
ticker = rand(`MSFT`GOOG`FB`ORCL`IBM`PPT`AZH`ILM`ANZ,n);
id = rand(`A`B`C, n)
x=rand(1.0, n)
t=table(ticker, id, x)
db=database(directory="dfs://testdb", partitionType=HASH, partitionScheme=[STRING, 5])
pt = db.createPartitionedTable(t, `pt, `ticker)
pt.append!(t)

saveText(<select * from pt>, "/home/DolphinDB/pt.txt")