DolphinDB的默认编码是UTF-8。可以在c++中用MultiByteToWideChar()函数映射一个字符串到一个宽字符(unicode)的字符串。代码如下: wchar_t *T2OLE(std::string raw){ const char * s = raw.c_str(); int unicodeLen = ::MultiByteToWideChar(CP_UTF8, 0, s, -1, NULL, 0); wchar_t *pUnicode; pUnic...
回答于 2021-06-15 19:37
可用下面方法获取每个分区的行数: login(`admin, `123456) tn8k = loadTable("dfs://singleValHour", "tn8k") ds = sqlDS(<select count(*) from tn8k>, true) t=mr(ds, mapFunc = x->table(x.count, [x.schema().chunkPath] as chunkPath), finalFunc=unionAll{, false}) 上面代码中用sqlDS切分数据源,在...
回答于 2021-06-15 19:35
可以先创建一张临时表,把数据恢复到临时表,然后再导入目标表。 migrate("/hdd/database/szl2data/20200601/","dfs://STOCK_SZL2_TAQ","SZL2_TAQ") db=database("dfs://STOCK_SZL2_TAQ") t=db.loadTable("SZL2_TAQ") db.createPartitionedTable(t, `TAQ, `date`symbol); temp=db.loadTable("TAQ") day=2020.06.02 for...
回答于 2021-06-15 19:30
参阅用户手册中concat的说明,第二个参数只能是字符串或字符。你在计算concat(concat(string(yearOfRegistration),"."),string(monthOfRegistration))这个时,第二个参数值是string(monthOfRegistration),这个是字符串向量了,所以报错。可试试下面代码: select string(yearOfRegistration) + "." + string(monthOfReg...
回答于 2021-06-15 19:29
where条件不能这么写,要写成如下: select count(*) from dfsTab where date between 2018.12.01:2019.01.01 group by date DolphinDB在解决海量数据的存取时,并不提供行级的索引,而是将分区作为数据库的物理索引。系统在执行分布式查询时,首先根据WHERE条件确定需要的分区。大多数分布式查询只涉及分布式表的部分...
回答于 2021-06-15 19:27
DolphinDB中DATE默认格式是yyyy.MM.dd,如2020.01.01,如不符合这个格式,需要用datetimeParse进行转换。代码改为如下: select temporalParse(string(yearOfRegistration) + "." + string(monthOfRegistration) + ".01","yyyy.M.dd") as newcat from tb 或者从MONTH类型转换为DATE: select date(1970.01M+(yearOfRegi...
回答于 2021-06-15 19:27
一个维度表就是一个分区。一般分区名为"__"+tableName. 比如我在已存在的分布式数据库dfs://STOCK_SHL2_TAQ中创建维度表dt,代码如下, db=database("dfs://STOCK_SHL2_TAQ") timestamp = [09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12] sym = `C`MS`MS`MS`IBM`IBM`C`C`C price=...
回答于 2021-06-15 19:26
这是因为多个批处理作业并发往同个分区写入数据了。在DolphinDB database中,同一个分区不能被多个writer并发写入,当一个分区被某一个事务A锁定之后,另一个事务B试图再次去锁定这个分区时,系统立刻会抛出异常导致事务B失败回滚。详见https://github.com/dolphindb/...
回答于 2021-06-15 19:24
DolphinDB的DFS表数据读写是支持快照隔离的。一次写入的数据,读的时候要么全部读不到,要么全部读到。 而且写入批次间隔较大,因此可以去掉流表,直接写入DFS表,客户端在写入DFS表失败后,可重试写入。
回答于 2021-06-15 17:10
在DolphinDB中,使用backup函数对数据库分区进行备份,备份后,系统会在backupDir/dbName/tbName目录下生成元数据文件meta.bin和数据文件<chunkID>.bin。也就是说,实际目录会在备份目录backupDir下面生成2层子目录,分别是数据库名子目录和表名子目录。因此,目录D:/DolphinDB/20200601/STOCK_SHL2_TAQ/SHL2_TAQ/...
回答于 2021-06-15 17:09