Example 1.文本文件导入




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


在下面的例子中,我们将经常使用USstocks.csv文本文件。它包含从1990年到2016年的上千个美国股票的每日交易记录。用户可以从多个渠道获得这些数据。最常用的美国股票历史数据资源来自芝加哥大学的证券价格研究中心(CRSP)。


我们将会使用USstocks.csv中的以下列:


列名

描述

PERMNO

CRSP分配的永久5位股票代码

TICKER

交易所分配的股票代码

date

日期

PRC

每股价格

SHROUT

流通股

RET

股票日收益

VOL

每日交易量


并行加载 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.