loadTextEx
语法
loadTextEx(dbHandle, tableName, partitionColumns, filename, [delimiter], [schema], [skipRows=0], [transform])
参数
dbHandle 是数据库的句柄,可以是内存数据库或分布式数据库。
tableName 是一个字符串,表示表的名称。
partitionColumns 是字符串标量或向量,表示分区列。对于顺序分区类型的数据库,partitionColumns 为空字符串””。对于组合分区类型的数据库,partitionColumns 是字符串向量。
filename 是字符串,表示数据文件的路径。
delimiter 字符串标量,表示数据文件中各列的分隔符。分隔符可以是一个或多个字符,默认是逗号(’,’)。
schema 是一个表,用于指定各列的数据类型。具体请参考 loadText 的 schema 参数。
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});