导入csv格式数据文件时存在单引号,应该怎么去掉(追问)?

我有一份csv文件想导入dolphindb,原始数据的前两列内容如下,且没有字段名:
attachments-2021-05-as5A4Mbt60ac70c7064b7.png第一个字段名应该是time,类型应该是STRING,且带有单引号('');
第二个字段名应该是id,类型应该也是STRING,且带有单引号(''),但是有效id的长度是6位,也有可能是5位,所以用下列代码导入时有问题:

//创建分区数据库和表
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

有效id的长度是5位的数据导入进来是这样的:

attachments-2021-05-c9UF8T8S60ac70de59cf6.png
请问应该怎么办?

请先 登录 后评论

1 个回答

Jax Wu

可以在下面的代码指定读取数据的长度:

//d2m函数:loadTextEx函数的一个参数,读取表的id列时去掉首末的单引号
def d2m(mutable t){
    return t.replaceColumn!("id", t.id.substr(1, 6))
}

改为:

//d2m函数:loadTextEx函数的一个参数,对数据文件进行格式转换
def d2m(mutable t){
    return t.replaceColumn!("id", t.id.substr(1, t.id.strlen()-2))
请先 登录 后评论