saveText

语法

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

参数

New in version 2.00.8: obj 支持输入 SQL 元代码

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

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

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

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

New in version 2.00.4: 参数 header

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");
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;
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")