loadTextEx

语法

loadTextEx(dbHandle, tableName, partitionColumns, filename, [delimiter], [schema], [skipRows=0], [transform])

参数

dbHandle 是数据库的句柄,可以是内存数据库或分布式数据库。

tableName 是一个字符串,表示表的名称。

partitionColumns 是字符串标量或向量,表示分区列。对于顺序分区类型的数据库,partitionColumns 为空字符串””。对于组合分区类型的数据库,partitionColumns 是字符串向量。

filename 是字符串,表示数据文件的路径。

delimiter 字符串标量,表示数据文件中各列的分隔符。分隔符可以是一个或多个字符,默认是逗号(’,’)。

schema 是一个表,用于指定各列的数据类型。具体请参考 loadTextschema 参数。

skipRows 是0到1024之间的整数,表示从文件头开始忽略的行数。它是一个可选参数。默认值为0。

transform 是一元函数,并且该函数接受的参数必须是一个表。

详请

将数据文件加载到数据库中。

  • 如果要将数据文件加载到分布式数据库中,必须指定 tableName,并且不能为空字符串。

  • 如果要将数据文件加载到内存数据库中,那么 tableName 为空字符串或者不指定 tableName

如果指定了 transform 参数,需要先创建分区表,再加载数据。系统会对数据文件中的数据执行 transform 参数指定的函数,再将得到的结果保存到数据库中。

loadTextEx 函数与 loadText 函数有很多共同之处,例如第一行数据是否判断为列名,如何确定各列的数据类型,列名的要求及自动调整等。细节请参见 loadText 函数文档。

注意:从 1.30.22 版本开始,loadTextEx 支持加载一条记录中包含多个换行符的数据文件。

例子

使用以下脚本生成模拟的数据文件:

$ n=10000
$ ID=rand(100, n)
$ dates=2017.08.07..2017.08.11
$ date=rand(dates, n)
$ vol=rand(1..10 join int(), n)
$ t=table(ID, date, vol)
$ saveText(t, "/home/DolphinDB/Data/t.txt");

例1. 把t.txt文件加载到范围分区类型的分布式数据库中,分区列为ID。

$ db = database(directory="dfs://rangedb", partitionType=RANGE, partitionScheme=0 51 101)
$ pt=loadTextEx(dbHandle=db,tableName=`pt, partitionColumns=`ID, filename="/home/DolphinDB/Data/t.txt");

例2. 把t.txt文件加载到组合分区类型的分布式数据库中,分区列为date和ID。

$ dbDate = database(directory="", partitionType=VALUE, partitionScheme=2017.08.07..2017.08.11)
$ dbID=database(directory="", partitionType=RANGE, partitionScheme=0 51 101)
$ db = database(directory="dfs://compoDB", partitionType=COMPO, partitionScheme=[dbDate, dbID])
$ pt=loadTextEx(dbHandle=db, tableName=`pt, partitionColumns=`date`ID, filename="/home/DolphinDB/Data/t.txt");

例3. 把t.txt加载到值分区类型分内存数据库中,分区列为date。

$ db = database(directory="", partitionType=VALUE, partitionScheme=2017.08.07..2017.08.11)
$ pt = db.loadTextEx(tableName="", partitionColumns=`date, filename="/home/DolphinDB/Data/t.txt");

$ pt.sortBy!(`ID`x);

例4. 示例文件的vol列包含空值,将空值填充为0后再加载到组合分区类型的分布式数据库中。

$ dbDate = database(directory="", partitionType=VALUE, partitionScheme=2017.08.07..2017.08.11)
$ dbID=database(directory="", partitionType=RANGE, partitionScheme=0 51 101)
$ db = database(directory="dfs://compoDB", partitionType=COMPO, partitionScheme=[dbDate, dbID]);

$ pt=db.createPartitionedTable(t,`pt,`date`ID)
$ pt=loadTextEx(dbHandle=db, tableName=`pt, partitionColumns=`date`ID, filename="/home/DolphinDB/Data/t.txt", transform=nullFill!{,0});