我们可以先通过loadTextEx函数把csv数据先导入dolphindb数据库,入库的时候指定数据的格式即可,上面的例子可以根据下面的代码修改:
//创建分区数据库和表 def createDatabaseAndTable(dbUrl, tableName){ if(existsDatabase(dbUrl)){ dropDatabase(dbUrl) } dbDate = database("", RANGE, date(datetimeAdd(2010.01M,0..15*12,'M'))) dbSymbol = database("", HASH, [SYMBOL, 20]) db = database(dbUrl, COMPO, [dbDate, dbSymbol]) databaseTable = table(1:0, `time`id`price, [TIMESTAMP,SYMBOL,DOUBLE]) return createPartitionedTable(db, databaseTable, tableName, `time`id) } //d2m函数:loadTextEx函数的一个参数,读取表的id列时去掉首末的单引号 def d2m(mutable t){ return t.replaceColumn!("id", t.id.substr(1, 6)) } //向数据库导入数据文件 def loadCsv(filePath, dbHandle, tableName){ schemaTB = extractTextSchema(filePath) update schemaTB set name=`time`id`price update schemaTB set type="TIMESTAMP" where name="time" update schemaTB set type="STRING" where name="id" schemaTB["format"]=array(STRING, schemaTB.rows()).fill!(0,"'yyyy-MM-dd HH:mm:ss.SSS'") loadTextEx(dbHandle=dbHandle, tableName=tableName, partitionColumns=`time`id, filename=filePath, schema=schemaTB, transform=d2m) } //用loadTextEx函数直接导入数据库 //创建或访问数据库需要权限,初次连接数据节点时,登陆一次即可 login("admin","123456") filePath ="F:/Data/test.csv" dbUrl="dfs://testDB" tableName = "testTable" //创建数据库和表 createDatabaseAndTable(dbUrl, tableName) //获取数据库的handle db=database(dbUrl) //将csv数据文件导入数据库 loadCsv(filePath, db, tableName) //查询 tb = loadTable(dbUrl,tableName) select * from tb