Example 1.文本文件导入




我们经常把文本文件的数据导入到数据库中。将文本文件加载到内存通常是提高数据分析性能的难点。我们可以通过并行加载文件的方式提高数据加载的速度。



并行加载 USstocks.csv 文件:



USstocks = ploadText("C:/DolphinDB/Data/USstocks.csv");



非并行加载 USstocks.csv 文件:



USstocks = loadText("C:/DolphinDB/Data/USstocks.csv");



并行加载通常比非并行方式快。



>timer USstocks = ploadText("C:/DolphinDB/Data/USstocks.csv");

Time elapsed: 22415.377 ms


>timer USstocks = loadText("C:/DolphinDB/Data/USstocks.csv");

Time elapsed: 59841.574 ms



并行加载文本文件需要的内存至少是表大小的两倍,而非并行加载文件需要的内存要大于表的大小。如果需要导入的文本文件产生的数据表比可用内存大,我们可以把数据保存在分布式文件系统的分区表中。详情请参考Example 2.


当加载外部文件时,系统会对每列随机抽样,然后推断每列的数据类型。


我们推荐用户使用extractTextSchema函数检查文本文件中的数据类型。在下面例子中,RET字段的某些值是“C”,系统认为RET字段的数据类型是STRING.




schema = extractTextSchema("c:/DolphinDB/Data/USstocks.csv");

schema;


name    type

------- ------

PERMNO  INT

date    DATE

SHRCD   INT

TICKER  SYMBOL

TRDSTAT CHAR

PERMCO  INT

HSICCD  INT

CUSIP   SYMBOL

DLSTCD  SYMBOL

DLPRC   SYMBOL

DLRET   SYMBOL

BIDLO   DOUBLE

ASKHI   DOUBLE

PRC     DOUBLE

VOL     INT

RET     STRING

BID     DOUBLE

ASK     DOUBLE

SHROUT  INT

CFACPR  DOUBLE

CFACSHR DOUBLE

OPENPRC DOUBLE



以下脚本把RET字段的数据类型转换为DOUBLE,然后以正确的表结构把文本文件加载到DolpbinDB中。



update schema set type=`DOUBLE where name=`RET;

USstocks = ploadText("c:/DolphinDB/Data/USstocks.csv", , schema);



在数据浏览器中显示 USstocks 表的前20条记录:






Download source code here.