如何从MySQL迁移到DolphinDB

时间:2019-07-01 08:24:21

标签: mysql sql dolphindb

在MySQL中,我有2个表定义如下:

DROP TABLE IF EXISTS `tbl_monitor`;
CREATE TABLE `tbl_monitor` (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `byte_val` int(11) DEFAULT NULL ,
 `int_val` int(11) DEFAULT NULL ,
 `float_val` float DEFAULT NULL ,
 `time` bigint(20) DEFAULT NULL ,
 `variable` bigint(20) DEFAULT NULL ,
 `active` tinyint(1) DEFAULT NULL ,
 `number` varchar(255) DEFAULT NULL,
 `timestamp` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`) USING BTREE,
 KEY `FK_cjj1quo5uu1iokxuqxb2aoop3` (`variable`) USING BTREE,
 KEY `time` (`time`) USING BTREE,
 CONSTRAINT `FK_cjj1quo5uu1iokxuqxb2aoop3` FOREIGN KEY (`variable`) REFERENCES `tbl_variable` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

CREATE TABLE `tbl_variable`  (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `active` tinyint(1) NULL DEFAULT NULL,
 `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' ,
 `number` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' ,
 `key_variable` tinyint(1) NULL DEFAULT NULL  ,
 `selected` tinyint(1) NULL DEFAULT NULL  ,
 `board_active` tinyint(1) NULL DEFAULT NULL ,
 `v_type` int(11) NULL DEFAULT NULL ,
 `default_value` int(11) NULL DEFAULT NULL ,
 `data_source` bigint(20) NULL DEFAULT NULL ,
 `variable_group` bigint(20) NULL DEFAULT NULL ,
 `motion` bigint(20) NULL DEFAULT NULL ,
 `alarm_info` bigint(20) NULL DEFAULT NULL ,
 `equipment_maintain_var` bigint(20) NULL DEFAULT NULL,
 `data_src_var_map` bigint(20) NULL DEFAULT NULL ,
 `parameter_set` bigint(20) NULL DEFAULT NULL,
 `lowerlimit` double NOT NULL,
 `toplimit` double NOT NULL ,
 `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' ,
 `value_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '',
 `interface_text` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' ,
 `monitor_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '',
 `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' ,
 `data_source_type` bigint(20) NULL DEFAULT NULL,
 `is_storage` tinyint(1) NULL DEFAULT NULL,
 `curve_range` bigint(20) NULL DEFAULT NULL,
 `lower_of_curves` double NULL DEFAULT NULL,
 `top_of_curves` double NULL DEFAULT NULL,
 `curve_color` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
 PRIMARY KEY (`id`) USING BTREE,
 UNIQUE INDEX `UK_bptibcxw3r6djvfvjkfyjysfx`(`data_src_var_map`) USING BTREE,
 INDEX `FK_47dsvuotnfmh56pl7q8t04ans`(`data_source`) USING BTREE,
 INDEX `FK_3a8o9g559hcv7dvp46psxt2h2`(`variable_group`) USING BTREE,
 INDEX `FK_il8dmghmkqssntbrj4bxeh9oo`(`motion`) USING BTREE,
 INDEX `FK_rtj6gs9tv23ye6i6iajlg6che`(`alarm_info`) USING BTREE,
 INDEX `FK_362u3oja2amg203cecn981ihv`(`equipment_maintain_var`) USING BTREE,
 INDEX `FK_k1excwhcxnmu9dp9pk84ddm4o`(`parameter_set`) USING BTREE,
 INDEX `FK_7b2r98qn8ok0f9yfp1bm75uwh`(`data_source_type`) USING BTREE,
 CONSTRAINT `FK_362u3oja2amg203cecn981ihv` FOREIGN KEY (`equipment_maintain_var`) REFERENCES `tbl_equipment_maintain_var` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
 CONSTRAINT `FK_3a8o9g559hcv7dvp46psxt2h2` FOREIGN KEY (`variable_group`) REFERENCES `tbl_variable_group` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
 CONSTRAINT `FK_47dsvuotnfmh56pl7q8t04ans` FOREIGN KEY (`data_source`) REFERENCES `tbl_data_source` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
 CONSTRAINT `FK_7b2r98qn8ok0f9yfp1bm75uwh` FOREIGN KEY (`data_source_type`) REFERENCES `tbl_data_source_type` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
 CONSTRAINT `FK_il8dmghmkqssntbrj4bxeh9oo` FOREIGN KEY (`motion`) REFERENCES `tbl_motion` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
 CONSTRAINT `FK_k1excwhcxnmu9dp9pk84ddm4o` FOREIGN KEY (`parameter_set`) REFERENCES `tbl_parameter_set` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
 CONSTRAINT `FK_rtj6gs9tv23ye6i6iajlg6che` FOREIGN KEY (`alarm_info`) REFERENCES `tbl_alarm_info` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
 CONSTRAINT `FK_sdkjfsdfshfewdkjfe654d5f4` FOREIGN KEY (`data_src_var_map`) REFERENCES `tbl_data_src_var_map` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 353 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

我下载了MYSQL插件,并在DolphinDB GUI中执行以下代码:

loadPlugin("C:/MYSQL_V0.96.0/PluginMySQL_win32.txt")

use mysql
connection=connect("127.0.0.1", 3306, `newuser, `dolphindb123, `ecimp_ver3)

t1=load(connection,"tbl_variable");
db1=database("C:/dolphindb_gj/tblVariable");
saveTable(db1, t1, `tbl_variable);

login('admin', "123456")
TIME_RANGE = 2017.12.10 +  0..(365*30)
db2=database("dfs://tblMonitor", RANGE, TIME_RANGE)

schema=select name,type from extractSchema(connection,`tbl_monitor)
update schema set type="TIMESTAMP" where name="time"

tbl_monitor=loadEx(connection,db2,"tbl_monitor","time","tbl_monitor",schema)

成功完成后,我想将以下mysql查询代码转换为dolphindb代码:

select m.*,v.monitor_type from  m, v 
where m.time between 1515570908112 and 1515657308112  and m.variable=v.id and v.selected=1 
ORDER BY m.time

所以我将代码编写为以下代码:

db1=database("C:/dolphindb_gj/tblVariable");
db2=database("dfs://tblMonitor", RANGE, TIME_RANGE)
v=loadTable(db1,`tbl_variable);
m=loadTable(db2,"tbl_monitor"); 

select  m.*, v.monitor_type from ej(m,v,`variable,`id)
where m.time between 2018.01.10T07:55:08.112:2018.01.11T07:55:08.112 and v.selected=1 
order by  m.time

然后我在DolphinDB GUI中执行,错误发生在下面:

2019-07-01T16:18:45.346: execution was completed with exception
All columns of a table must have the same length.

如何解决?

1 个答案:

答案 0 :(得分:1)

从ej(m,v,variable, id)中选择m。*,monitor_type 其中m.time在2018.01.10T07:55:08.112:2018.01.11T07:55:08.112和v.selected = 1之间 按m.time排序