summaryrefslogtreecommitdiff
path: root/src/main/java/com/nis/handler/SqlHandler.java
blob: f49db3dffdf6d0436683559c22bde5b80ecd2958 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
package com.nis.handler;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import javax.sql.DataSource;

import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.init.ScriptException;
import org.springframework.jdbc.datasource.init.ScriptUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ResourceUtils;

import com.nis.dao.SqlDao;
import com.nis.entity.SysConfigEntity;
import com.nis.entity.SysUserEntity;
import com.nis.service.AlertMessageService;
import com.nis.service.AssetAssetService;
import com.nis.service.AssetBrandService;
import com.nis.service.AssetModelService;
import com.nis.service.AssetTypeConfService;
import com.nis.service.ChartService;
import com.nis.service.DcService;
import com.nis.service.EndpointService;
import com.nis.service.ProjectTopoService;
import com.nis.service.SysConfigService;
import com.nis.service.SysUserService;
import com.nis.util.Constant;
import com.nis.util.ToolUtil;

import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.log.Log;

/**
 * 此类主要为执行各类sql语句
 * @author admin
 *
 */
@Service
public class SqlHandler {
	
	private Log log = Log.get();
	
	@Autowired
	private SqlDao sqlDao;
	
	@Autowired
	private AssetBrandService assetBrandService;
	
	@Autowired
	private AssetModelService assetModelService;
	
	@Autowired
	private AssetAssetService assetAssetService;
	
	@Autowired
	private DcService dcService;
	
	@Autowired
	private AlertMessageService alertMessageService;
	
	@Autowired
	private EndpointService endpointService;
	
	@Autowired
	private ChartService chartService;
	
	@Autowired
	private DataSource dataSource;
	
	@Autowired
	private SysUserService sysUserService;
	
	@Autowired
	private SysConfigService sysConfigService;
	
	@Autowired
	private ProjectTopoService projectTopoService;
	
	@Autowired
	private AssetTypeConfService assetTypeConfService;
	
	public void removeData() {
		String assetPing = "delete from asset_ping";
		sqlDao.execute(assetPing);
		
		String updateChartData="update visual_chart set height = ceil(height/100) where height > 12";
		sqlDao.execute(updateChartData);
	}
	
	public void removeTable() {
		String dropSql = "drop table account;"
				+ "drop table alert_message;"
				+ "drop table asset;"
				+ "drop table asset_tag;"
				+ "drop table chart;"
				+ "drop table chart_element;"
				+ "drop table conf_event;"
				+ "drop table endpoint;"
				+ "drop table endpoint_state;"
				+ "drop table idc_traffic;"
				+ "drop table model;"
				+ "drop table module;"
				+ "drop table notification_script;"
				+ "drop table panel;"
				+ "drop table project;"
				+ "drop table metadata_metric;"
				+ "drop table metadata_label;"
				+ "drop table qrtz_blob_triggers;"
				+ "drop table qrtz_calendars;"
				+ "drop table qrtz_cron_triggers;"
				+ "drop table qrtz_fired_triggers;"
				+ "drop table qrtz_locks;"
				+ "drop table qrtz_paused_trigger_grps;"
				+ "drop table qrtz_scheduler_state;"
				+ "drop table qrtz_simple_triggers;"
				+ "drop table qrtz_simprop_triggers;"
				+ "drop table qrtz_triggers;"
				+ "drop table sys_area;"
				+ "drop table idc;"
				+ "drop table terminal_log;"
				+ "drop table user_group;"
				+ "drop table user_group_rel;"
				+ "drop table user_notification;"
				+ "drop table qrtz_job_details;";
		sqlDao.execute(dropSql);
	}
	
	public void tableCopy() {
		StringBuilder sb =new StringBuilder();
		List<String> tableNames = sqlDao.allTables();
		for(String tableName : tableNames) {
			sb.append("CREATE TABLE "+tableName+"_copy SELECT * FROM "+tableName+";");
		}
		sqlDao.execute(sb.toString());
	}
	
	
	public void removeCopy() {
		StringBuilder sb =new StringBuilder();
		List<String> sqls = sqlDao.allRemoveCopyTables();
		for(String sql : sqls) {
			sb.append(sql);
		}
		sqlDao.execute(sb.toString());
	}
	
	public void dropTriggers() {
		String databaseName = Constant.DATABASE_NAME;
		log.info("databaseName is {}",databaseName);
		if(StrUtil.isEmpty(databaseName)) {
			throw new RuntimeException("database name error");
		}
		// 批量删除触发器
		StringBuilder sb =new StringBuilder();
		List<String> allTriggers = sqlDao.allTriggers(databaseName);
		for(String trigger : allTriggers) {
			sb.append("drop trigger "+trigger+";");
		}
		if(StrUtil.isNotBlank(sb.toString())) {
			sqlDao.execute(sb.toString());	
		}
			
	}
	
	public void alterTable() {
		String sysLog = "ALTER TABLE `sys_log` \r\n"
				+ "ADD COLUMN `sys_api_key` int(10) NULL COMMENT '关联 sys_api_key.id' AFTER `create_date`;";
		sqlDao.execute(sysLog);
		
		String sysMenu = "ALTER TABLE `sys_menu` \r\n"
				+ "ADD COLUMN `description` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,\r\n"
				+ "ADD COLUMN `icon` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'nz-icon nz-alert-add',"
				+ "ADD COLUMN `required` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '必要权限,如编辑按钮需要 勾选查看权限 填写内容为 sys_menu.id,多个逗号分隔 1,2';";
		sqlDao.execute(sysMenu);
		
		String alertRule = "ALTER TABLE `alert_rule` \r\n"
				+ "CHANGE COLUMN `alert_name` `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '告警名称',\r\n"
				+ "ADD COLUMN `severity_id` int(10) NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF',"
				+ "ADD COLUMN `method` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL;";
		sqlDao.execute(alertRule);
		
		String assetPing = "ALTER TABLE `asset_ping` \r\n"
				+ "ADD COLUMN `asset_id` int(10) NULL;";
		sqlDao.execute(assetPing);
		
		String cabinet = "ALTER TABLE `cabinet` \r\n"
				+ "CHANGE COLUMN `idc_id` `dc_id` int(10) NOT NULL COMMENT '数据中心id';";
		sqlDao.execute(cabinet);
		
		String link = "ALTER TABLE `link` \r\n"
				+ "DROP COLUMN `prev`,\r\n"
				+ "DROP COLUMN `next`,\r\n"
				+ "ADD COLUMN `weight` int(10) NULL;";
		sqlDao.execute(link);
		
		String projectTopo = "ALTER TABLE `project_topo` \r\n"
				+ "MODIFY COLUMN `topo` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '拓扑图配置信息';";
		sqlDao.execute(projectTopo);
		
		String projectTopoIcon = "ALTER TABLE `project_topo_icon` \r\n"
				+ "ADD COLUMN `unit` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'icon组',\r\n"
				+ "ADD COLUMN `width` int(10) NULL COMMENT '图片宽度  默认:-1 未知' ,\r\n"
				+ "ADD COLUMN `height` int(10) NULL COMMENT '图片高度	默认:-1 未知' ;";
		sqlDao.execute(projectTopoIcon);
		
		String promServer = "ALTER TABLE `prom_server` \r\n"
				+ "CHANGE COLUMN `idc_id` `dc_id` int(10) NOT NULL COMMENT '所在idc',\r\n"
				+ "ADD COLUMN `status_info` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,\r\n"
				+ "ADD COLUMN `token` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;";
		sqlDao.execute(promServer);
		
		String sysUser = "ALTER TABLE `sys_user` \r\n"
				+ "CHANGE COLUMN `user_id` `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
				+ "CHANGE COLUMN `password` `pin` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',\r\n"
				+ "CHANGE COLUMN `create_time` `create_at` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',\r\n"
				+ "ADD COLUMN `name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户姓名\\r\\n\\r\\n(用于系统内展示用户名称)',\r\n"
				+ "ADD COLUMN `last_login_time` datetime NULL COMMENT '最后登陆时间',\r\n"
				+ "ADD COLUMN `last_login_ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '最后登陆ip',\r\n"
				+ "ADD COLUMN `mobile` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '手机号',\r\n"
				+ "ADD COLUMN `create_by` int(10) NULL COMMENT '添加人',\r\n"
				+ "DROP PRIMARY KEY,\r\n"
				+ "ADD PRIMARY KEY (`id`) USING BTREE;";
		sqlDao.execute(sysUser);
	}
	
	public void batchAddTable() {
		 String alertNotifyLog = "CREATE TABLE `alert_notify_log` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `message_id` int(10) NOT NULL COMMENT '关联 alert_message.id',\r\n"
		 		+ "  `user_id` int(10) NOT NULL COMMENT '关联 sys_user.id',\r\n"
		 		+ "  `message_state` char(1) NOT NULL COMMENT '消息状态1: active2: expired',\r\n"
		 		+ "  `state` char(1) NOT NULL COMMENT '通知状态0:失败1:成功',\r\n"
		 		+ "  `error_msg` varchar(1024) NOT NULL DEFAULT '' COMMENT '发送错误信息',\r\n"
		 		+ "  `time` datetime NOT NULL COMMENT '发送时间',\r\n"
		 		+ "  `method_id` int(10) NOT NULL COMMENT '通知方式id 关联ALERT_NOTIFICATION_METHOD.id',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String alertNotifyMethod = "CREATE TABLE `alert_notify_method` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
		 		+ "  `name` varchar(64) NOT NULL COMMENT '通知方式名称',\r\n"
		 		+ "  `file_path` varchar(255) NOT NULL COMMENT '除内置外,必填脚本路径,nz-web所在服务器路径',\r\n"
		 		+ "  `account` varchar(255) NOT NULL COMMENT '可选值为user表属性id,name,username,email,mobile',\r\n"
		 		+ "  `state` int(1) DEFAULT NULL COMMENT '状态0:停用1:可用',\r\n"
		 		+ "  `build_in` int(1) NOT NULL COMMENT '可选值:0:非内置1:内置默认:0系统内置一条 email 通知',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String alertSeverityConf = "CREATE TABLE `alert_severity_conf` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(64) NOT NULL,\r\n"
		 		+ "  `color` varchar(64) NOT NULL,\r\n"
		 		+ "  `weight` int(3) NOT NULL COMMENT '1-100 顺序取值不重复,值越小告警级别越高',\r\n"
		 		+ "  `remark` varchar(255) NOT NULL,\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String alertSilenceConf = "CREATE TABLE `alert_silence_conf` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
		 		+ "  `name` varchar(255) DEFAULT NULL,\r\n"
		 		+ "  `matchers` varchar(4096) NOT NULL,\r\n"
		 		+ "  `reason` varchar(1024) NOT NULL COMMENT '记录告警静音原因\\r\\n\\r\\n默认:“”',\r\n"
		 		+ "  `start_at` datetime NOT NULL COMMENT '开始时间',\r\n"
		 		+ "  `end_at` datetime NOT NULL COMMENT '结束时间',\r\n"
		 		+ "  `utime` datetime NOT NULL,\r\n"
		 		+ "  `state` int(1) NOT NULL COMMENT '可选值:\\r\\n\\r\\n1:active\\r\\n\\r\\n2:pending\\r\\n\\r\\n3:expired',\r\n"
		 		+ "  `seq` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '全局唯一,用于导入撤销\\r\\n\\r\\n默认:“”',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String assetAsset = "CREATE TABLE `asset_asset` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(128) NOT NULL COMMENT '不重复,唯一索引',\r\n"
		 		+ "  `number` varchar(128) NOT NULL DEFAULT '' COMMENT '资产编号',\r\n"
		 		+ "  `sn` varchar(128) NOT NULL DEFAULT '' COMMENT '资产序列号',\r\n"
		 		+ "  `pid` int(10) NOT NULL DEFAULT -1 COMMENT '默认:-1\\r\\n\\r\\n只有type vm = 1可以且必须填写此字段,且 pid.type vmh = 1',\r\n"
		 		+ "  `type_id` int(10) NOT NULL,\r\n"
		 		+ "  `state_id` int(10) NOT NULL,\r\n"
		 		+ "  `brand_id` int(10) NOT NULL,\r\n"
		 		+ "  `model_id` int(10) NOT NULL,\r\n"
		 		+ "  `dc_id` int(10) NOT NULL,\r\n"
		 		+ "  `cabinet_id` int(10) DEFAULT NULL,\r\n"
		 		+ "  `cabinet_start` int(10) DEFAULT NULL,\r\n"
		 		+ "  `cabinet_end` int(10) DEFAULT NULL,\r\n"
		 		+ "  `manage_ip` varchar(64) NOT NULL COMMENT '管理ip',\r\n"
		 		+ "  `purchase_date` date DEFAULT NULL COMMENT '购买日期',\r\n"
		 		+ "  `create_at` datetime DEFAULT NULL COMMENT '添加时间',\r\n"
		 		+ "  `update_at` datetime DEFAULT NULL COMMENT '更新时间',\r\n"
		 		+ "  `create_by` int(10) DEFAULT NULL COMMENT '添加人,与user表关联',\r\n"
		 		+ "  `update_by` int(10) DEFAULT NULL COMMENT '最后更新人',\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL,\r\n"
		 		+ "  `auth_protocol_port` int(10) DEFAULT NULL COMMENT '认证服务端口',\r\n"
		 		+ "  `auth_type` char(1) DEFAULT NULL COMMENT '认证方式1:用户名密码\\r\\n\\r\\n2:密钥',\r\n"
		 		+ "  `auth_username` varchar(64) DEFAULT NULL COMMENT '用户名',\r\n"
		 		+ "  `auth_pin` varchar(256) DEFAULT NULL COMMENT '密码auth_type =1 : 记录登录密码\\r\\n\\r\\nauth_type=2 : 记录密钥密码',\r\n"
		 		+ "  `auth_pri_key` text DEFAULT NULL COMMENT '秘钥',\r\n"
		 		+ "  `auth_user_tip` varchar(64) DEFAULT NULL COMMENT '用户名提示 telnet协议有效',\r\n"
		 		+ "  `auth_pin_tip` varchar(64) DEFAULT NULL COMMENT '密码提示 telnet协议有效',\r\n"
		 		+ "  `snmp_credential_id` int(10) DEFAULT NULL COMMENT 'snmp凭证id type 开启snmp有效',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String assetBrand = "CREATE TABLE `asset_brand` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(64) DEFAULT NULL COMMENT '名称',\r\n"
		 		+ "  `remark` varchar(256) DEFAULT '' COMMENT '备注',\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL,\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String assetFieldGroup = "CREATE TABLE `asset_field_group` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(64) DEFAULT NULL COMMENT '名称',\r\n"
		 		+ "  `remark` varchar(1024) DEFAULT NULL,\r\n"
		 		+ "  `build_in` char(1) DEFAULT NULL COMMENT '1:内置,0:非内置,默认:0\\r\\n\\r\\n内置数据不允许删除',\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String assetFieldMeta = "CREATE TABLE `asset_field_meta` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(64) NOT NULL,\r\n"
		 		+ "  `meta_key` varchar(128) NOT NULL COMMENT '唯一不重复 正则:[\\\\w]+',\r\n"
		 		+ "  `group_id` varchar(128) NOT NULL COMMENT '关联 asset_field_group.id',\r\n"
		 		+ "  `search` char(1) NOT NULL DEFAULT '0' COMMENT '默认:0 0:不可查询\\r\\n\\r\\n1:可查询',\r\n"
		 		+ "  `display` char(1) NOT NULL DEFAULT '0' COMMENT '默认:0 0:列表不展示\\r\\n\\r\\n1:列表展示',\r\n"
		 		+ "  `type` varchar(32) NOT NULL DEFAULT 'TEXT' COMMENT '属性输入类型',\r\n"
		 		+ "  `remark` varchar(64) DEFAULT NULL,\r\n"
		 		+ "  `param` text NOT NULL COMMENT '默认:{}',\r\n"
		 		+ "  `build_in` int(1) NOT NULL DEFAULT 0 COMMENT '1:内置,0:非内置,默认:0',\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String assetFieldValue = "CREATE TABLE `asset_field_value` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `asset_id` int(10) NOT NULL COMMENT '	关联 asset.id',\r\n"
		 		+ "  `meta_id` int(10) NOT NULL COMMENT '关联asset_field_meta.id',\r\n"
		 		+ "  `value` text DEFAULT NULL,\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String assetModel = "CREATE TABLE `asset_model` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `brand_id` int(10) NOT NULL,\r\n"
		 		+ "  `name` varchar(64) NOT NULL COMMENT '型号名称',\r\n"
		 		+ "  `remark` varchar(256) NOT NULL DEFAULT '',\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL,\r\n"
		 		+ "  `usize` int(2) NOT NULL DEFAULT 1,\r\n"
		 		+ "  `chart_ids` varchar(4096) DEFAULT NULL COMMENT 'chart 模板id',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String assetStateConf = "CREATE TABLE `asset_state_conf` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(64) NOT NULL COMMENT '型号名称',\r\n"
		 		+ "  `ping` char(1) NOT NULL COMMENT '0:关闭\\r\\n\\r\\n1:开启',\r\n"
		 		+ "  `monitor` char(1) NOT NULL COMMENT '0:关闭\\r\\n\\r\\n1:开启',\r\n"
		 		+ "  `alert` char(1) NOT NULL COMMENT '0:关闭\\r\\n\\r\\n1:开启',\r\n"
		 		+ "  `remark` varchar(1024) NOT NULL DEFAULT '' COMMENT '默认“”',\r\n"
		 		+ "  `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置1:内置,0:非内置,默认:0\\r\\n\\r\\n内置数据不允许删除',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String assetTypeConf = "CREATE TABLE `asset_type_conf` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `pid` int(10) NOT NULL DEFAULT 0 COMMENT '父id 默认为0',\r\n"
		 		+ "  `vm` char(1) NOT NULL COMMENT '是否为虚拟机 0:不是虚拟机\\r\\n\\r\\n1:是虚拟机',\r\n"
		 		+ "  `vmh` char(1) NOT NULL COMMENT '是否为虚拟机宿主 0:不是宿主机,不支持挂载 虚拟机\\r\\n\\r\\n1:是宿主机,支持挂载虚拟机',\r\n"
		 		+ "  `name` varchar(64) NOT NULL COMMENT '名称',\r\n"
		 		+ "  `remark` varchar(1024) NOT NULL DEFAULT '',\r\n"
		 		+ "  `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置,0:非内置,默认:0\\r\\n\\r\\n内置数据不允许删除',\r\n"
		 		+ "  `auth_protocol` int(1) NOT NULL DEFAULT 0 COMMENT '认证协议 默认:0 \\r\\n\\r\\n0:无\\r\\n\\r\\n1:ssh\\r\\n\\r\\n2:telnet',\r\n"
		 		+ "  `snmp_enable` int(1) NOT NULL DEFAULT 0 COMMENT '是否支持snmp 默认:0 \\r\\n\\r\\n0:不支持\\r\\n\\r\\n1:支持',\r\n"
		 		+ "  `snmp_collect` int(1) NOT NULL DEFAULT 0 COMMENT '是否开启snmp采集 默认:0 \\r\\n\\r\\n0:不开启\\r\\n\\r\\n1:开启\\r\\n\\r\\n当snmp_enable=1时有效',\r\n"
		 		+ "  `ssh_collect` int(1) NOT NULL COMMENT '是否开启ssh采集 默认:0 \\r\\n\\r\\n0:不开启\\r\\n\\r\\n1:开启\\r\\n\\r\\n当 auth_protocol=1时有效',\r\n"
		 		+ "  `ssh_collect_script` varchar(256) NOT NULL DEFAULT '',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String dc = "CREATE TABLE `dc` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键自增',\r\n"
		 		+ "  `name` varchar(64) NOT NULL COMMENT '名称',\r\n"
		 		+ "  `location` varchar(256) DEFAULT NULL COMMENT '位置',\r\n"
		 		+ "  `tel` varchar(128) DEFAULT NULL COMMENT '联系电话',\r\n"
		 		+ "  `principal` int(10) DEFAULT NULL COMMENT '机房负责人',\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL COMMENT '全局唯一,用于导入撤销',\r\n"
		 		+ "  `x` int(10) DEFAULT NULL COMMENT '列',\r\n"
		 		+ "  `y` int(10) DEFAULT NULL COMMENT '行',\r\n"
		 		+ "  `longitude` double(8,5) DEFAULT NULL COMMENT '经度 -180,180',\r\n"
		 		+ "  `latitude` double(8,5) DEFAULT NULL COMMENT '纬度 -90,90',\r\n"
		 		+ "  `state` varchar(8) NOT NULL DEFAULT 'ON' COMMENT '可选值:ON,OFF 默认:ON',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
		 
		 String monitorEndpoint = "CREATE TABLE `monitor_endpoint` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(128) NOT NULL COMMENT '名称',\r\n"
		 		+ "  `module_id` int(10) NOT NULL,\r\n"
		 		+ "  `asset_id` int(10) NOT NULL,\r\n"
		 		+ "  `configs` text NOT NULL,\r\n"
		 		+ "  `hash` varchar(64) NOT NULL COMMENT '计算 moduleId + assetId + host + port + configs 的hash值,用于确保相同配置不重复',\r\n"
		 		+ "  `enabled` int(4) NOT NULL COMMENT '是否启用	 可选值\\r\\n\\r\\n0:停用\\r\\n\\r\\n1:启用',\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL,\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String monitorEndpointState = "CREATE TABLE `monitor_endpoint_state` (\r\n"
		 		+ "  `endpoint_id` int(10) NOT NULL,\r\n"
		 		+ "  `state` int(4) NOT NULL COMMENT ' ',\r\n"
		 		+ "  `time` datetime NOT NULL,\r\n"
		 		+ "  PRIMARY KEY (`endpoint_id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String monitorEventLog = "CREATE TABLE `monitor_event_log` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `event` varchar(64) NOT NULL COMMENT '唯一不重复\\r\\n\\r\\n包含值:cmd,prometheus,rule,snmp,blackbox',\r\n"
		 		+ "  `counter` int(10) NOT NULL COMMENT '描述信息,update  +1',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String monitorModule = "CREATE TABLE `monitor_module` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(64) DEFAULT NULL COMMENT '组件名称	唯一索引,表内不重复',\r\n"
		 		+ "  `project_id` int(10) NOT NULL,\r\n"
		 		+ "  `type` varchar(64) NOT NULL COMMENT '可选值http  snmp',\r\n"
		 		+ "  `endpoint_name_tmpl` varchar(64) NOT NULL COMMENT 'endpoint name模板 支持 {{}} 变量替换,asset,module\\r\\n\\r\\n例:{{asset.name}}-{{module.name}}\\r\\n\\r\\n最终endpoint的name为: 192.168.40.1-mysql',\r\n"
		 		+ "  `remark` varchar(256) DEFAULT NULL,\r\n"
		 		+ "  `configs` text NOT NULL COMMENT '配置参数	',\r\n"
		 		+ "  `snmp_yml` text DEFAULT NULL COMMENT 'snmp_exporter需要的配置部分',\r\n"
		 		+ "  `build_in` char(1) NOT NULL DEFAULT '0',\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL,\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String monitorProject = "CREATE TABLE `monitor_project` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(64) DEFAULT NULL COMMENT '应用名称',\r\n"
		 		+ "  `remark` varchar(256) DEFAULT NULL COMMENT '描述信息',\r\n"
		 		+ "  `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置	1:内置,0:非内置,默认:0',\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL,\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";

		 String snmpCredential = "CREATE TABLE `snmp_credential` (\r\n"
		 		+ "  `id` int(11) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(64) NOT NULL COMMENT '名称',\r\n"
		 		+ "  `remark` varchar(1024) DEFAULT NULL COMMENT '描述信息',\r\n"
		 		+ "  `type` int(1) NOT NULL COMMENT '1,2,3 -- > V1,V2,V3 创建人id',\r\n"
		 		+ "  `config` varchar(1024) DEFAULT NULL COMMENT '具体配置',\r\n"
		 		+ "  `port` int(1) NOT NULL DEFAULT 161 COMMENT '端口号 默认161',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String sysApiKey = "CREATE TABLE `sys_api_key` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
		 		+ "  `name` varchar(64) NOT NULL COMMENT '名称 唯一不重复',\r\n"
		 		+ "  `token` varchar(512) NOT NULL COMMENT '密钥 唯一不重复',\r\n"
		 		+ "  `role_id` int(10) NOT NULL COMMENT '角色id',\r\n"
		 		+ "  `create_by` int(10) NOT NULL COMMENT '创建用户',\r\n"
		 		+ "  `create_at` datetime NOT NULL COMMENT '创建时间',\r\n"
		 		+ "  `expire_at` datetime DEFAULT NULL COMMENT '失效时间 为空不失效',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String sysTimezone = "CREATE TABLE `sys_timezone` (\r\n"
		 		+ "  `id` int(4) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(255) NOT NULL COMMENT 'timezone id',\r\n"
		 		+ "  `offset` int(10) NOT NULL COMMENT '单位:milliseconds',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String terminalCmd = "CREATE TABLE `terminal_cmd` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `uuid` varchar(256) NOT NULL COMMENT '会话id',\r\n"
		 		+ "  `cmd` varchar(4096) DEFAULT NULL COMMENT '用户输入命令',\r\n"
		 		+ "  `time` int(10) DEFAULT NULL COMMENT '单位:ms\\r\\n\\r\\n记录的是 session开始后的时间偏移量',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String terminalRecord = "CREATE TABLE `terminal_record` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `uuid` varchar(256) NOT NULL COMMENT '会话ID',\r\n"
		 		+ "  `start_time` int(10) NOT NULL COMMENT '单位:ms\\r\\n\\r\\nrecord 开始时间,记录的是会话开始后的时间偏移量',\r\n"
		 		+ "  `end_time` int(10) NOT NULL COMMENT '单位:ms\\r\\n\\r\\nrecord 结束时间,记录的是会话开始后的时间偏移量',\r\n"
		 		+ "  `content` mediumblob NOT NULL COMMENT '记录的是 session开始后的时间偏移量\\r\\n\\r\\n最大储存 65K,超过部分再新增一条记录',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String terminalSession = "CREATE TABLE `terminal_session` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `uuid` varchar(256) DEFAULT NULL COMMENT '会话id',\r\n"
		 		+ "  `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
		 		+ "  `host` varchar(128) DEFAULT NULL COMMENT '登录主机',\r\n"
		 		+ "  `port` int(10) DEFAULT NULL COMMENT '端口',\r\n"
		 		+ "  `protocol` varchar(32) DEFAULT NULL COMMENT '协议,可选值:SSH,TELNET。统一大写',\r\n"
		 		+ "  `auth_type` int(10) DEFAULT NULL COMMENT '认证类型,1:密码,2:私钥证书  认证类型,1:密码,2:私钥证书\\r\\n\\r\\nssh可选值:1、2\\r\\n\\r\\ntelnet可选值:1',\r\n"
		 		+ "  `login_user` varchar(128) DEFAULT NULL COMMENT '登录主机的用户名',\r\n"
		 		+ "  `user_id` int(10) NOT NULL COMMENT 'nezha系统内用户id',\r\n"
		 		+ "  `remote_addr` varchar(128) NOT NULL COMMENT '客户端ip地址',\r\n"
		 		+ "  `start_time` datetime NOT NULL COMMENT '开始时间',\r\n"
		 		+ "  `end_time` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
		 		+ "  `status` int(1) NOT NULL COMMENT '0:连接中\\r\\n\\r\\n1:发送失败(没有通过ssh或telnet发送成功)\\r\\n\\r\\n2:已结束\\r\\n\\r\\n3:强制退出\\r\\n\\r\\n4:未知错误',\r\n"
		 		+ "  `kill_user_id` int(10) DEFAULT NULL COMMENT '强制关闭用户id',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String visualChart = "CREATE TABLE `visual_chart` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
		 		+ "  `name` varchar(255) NOT NULL COMMENT '图表标题',\r\n"
		 		+ "  `panel_id` int(10) NOT NULL COMMENT '图表id,关联panel表\\r\\n\\r\\n当 panel_id =0 代表为模板',\r\n"
		 		+ "  `group_id` int(10) NOT NULL COMMENT '关联 visual_chart.id,关联 chart  的 type 只能为 group',\r\n"
		 		+ "  `span` int(10) NOT NULL COMMENT 'type = group,span = 12, 用户修改无效',\r\n"
		 		+ "  `height` int(10) NOT NULL COMMENT 'type = group,height = -1,用户修改无效',\r\n"
		 		+ "  `update_by` int(10) NOT NULL COMMENT '更新人',\r\n"
		 		+ "  `update_at` datetime NOT NULL COMMENT '更新时间',\r\n"
		 		+ "  `type` varchar(32) NOT NULL COMMENT '图表类型 line\\r\\nbar\\r\\ntable\\r\\nstackArea\\r\\nsingleStat\\r\\nurl\\r\\nassetInfo\\r\\nalertList\\r\\ngroup',\r\n"
		 		+ "  `unit` int(10) NOT NULL DEFAULT 2 COMMENT '界面显示采用二级菜单',\r\n"
		 		+ "  `weight` int(10) NOT NULL DEFAULT 0 COMMENT '默认为 0,用于chart排序',\r\n"
		 		+ "  `param` text DEFAULT NULL COMMENT '参数 记录type的具体参数信息,数据格式为json对象\\r\\n\\r\\n当type = url时\\r\\n\\r\\n{\\r\\n\\r\\n    “url”:\"https://www.baidu.com\"\\r\\n\\r\\n}',\r\n"
		 		+ "  `pid` int(10) DEFAULT NULL COMMENT '模板id 图表通过模板创建时不能为空,便于后续模板修改同步修改',\r\n"
		 		+ "  `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置,0:非内置,默认:0',\r\n"
		 		+ "  `remark` varchar(1024) NOT NULL DEFAULT '' COMMENT '默认:\"\"',\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL COMMENT '导入唯一标识',\r\n"
		 		+ "  `var_type` int(1) DEFAULT NULL COMMENT '模板或使用模板创建有效,pid != null | panel_id == 0 时不能为空\\r\\n\\r\\n1: asset\\r\\n\\r\\n2: endpoint',\r\n"
		 		+ "  `var_id` int(10) DEFAULT NULL COMMENT 'pid != null 时不能为空\\r\\n\\r\\n根据var_type 分别对应 asset.id, endpoint.id,用于 表达式变量替换',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String visualChartElement = "CREATE TABLE `visual_chart_element` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
		 		+ "  `chart_id` int(10) NOT NULL COMMENT '图表id,关联chart表',\r\n"
		 		+ "  `expression` varchar(4096) NOT NULL COMMENT 'promql表达式',\r\n"
		 		+ "  `type` varchar(32) NOT NULL COMMENT 'normal:简单表达式,可页面解析,如:up{asset=\"192.168.40.40\",module=\"kafka\"}\\r\\n\\r\\nexpert:用户输入表达式,解析困难,直接在页面显示',\r\n"
		 		+ "  `legend` varchar(512) DEFAULT NULL COMMENT '图例别名表达式',\r\n"
		 		+ "  `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置',\r\n"
		 		+ "  `seq` varchar(64) DEFAULT NULL COMMENT '导入唯一标识 用于导入撤销',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String visualPanel = "CREATE TABLE `visual_panel` (\r\n"
		 		+ "  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
		 		+ "  `name` varchar(64) NOT NULL COMMENT '图表名',\r\n"
		 		+ "  `create_by` int(10) NOT NULL COMMENT '创建人id',\r\n"
		 		+ "  `type` varchar(64) NOT NULL DEFAULT 'dashboard' COMMENT '可选值:dashboard,asset,project,module,endpoint, model\\r\\n\\r\\n默认值:dashboard',\r\n"
		 		+ "  `link` int(10) DEFAULT NULL COMMENT '关联id',\r\n"
		 		+ "  `pid` int(10) NOT NULL DEFAULT 0 COMMENT '父id 默认0',\r\n"
		 		+ "  `weight` int(10) NOT NULL DEFAULT 0 COMMENT '排序 默认0',\r\n"
		 		+ "  `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置',\r\n"
		 		+ "  `seq` varchar(64) NOT NULL DEFAULT '' COMMENT '默认:“”\\r\\n\\r\\n用于导入撤销',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String visualExpressionTmpl = "CREATE TABLE `visual_expression_tmpl` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
		 		+ "  `name` varchar(64) NOT NULL COMMENT '模板名称',\r\n"
		 		+ "  `gname` varchar(64) NOT NULL DEFAULT 'default' COMMENT '组名,默认:default',\r\n"
		 		+ "  `expression` varchar(4096) NOT NULL COMMENT '表达式,不能为空',\r\n"
		 		+ "  `remark` varchar(512) NOT NULL COMMENT '描述',\r\n"
		 		+ "  `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置,0:非内置,默认:0',\r\n"
		 		+ "  `seq` varchar(64) NOT NULL DEFAULT '' COMMENT '用于导入撤销,默认:“”',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		 
		 String alertMessageActive = "CREATE TABLE `alert_message_active` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
		 		+ "  `severity` varchar(64) DEFAULT NULL COMMENT '告警级别',\r\n"
		 		+ "  `summary` text DEFAULT NULL COMMENT '告警摘要',\r\n"
		 		+ "  `description` text DEFAULT NULL COMMENT '告警描述',\r\n"
		 		+ "  `labels` text DEFAULT NULL COMMENT '告警labels信息',\r\n"
		 		+ "  `start_at` datetime DEFAULT NULL COMMENT '开始时间',\r\n"
		 		+ "  `end_at` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
		 		+ "  `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired',\r\n"
		 		+ "  `rule_id` int(10) NOT NULL COMMENT '告警规则ID',\r\n"
		 		+ "  `project_id` int(10) DEFAULT NULL COMMENT '关联project id',\r\n"
		 		+ "  `module_id` int(10) DEFAULT NULL COMMENT '关联module id',\r\n"
		 		+ "  `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id',\r\n"
		 		+ "  `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
		 		+ "  `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id',\r\n"
		 		+ "  `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key',\r\n"
		 		+ "  `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式\\r\\n\\r\\ntime     username\\r\\n\\r\\nmessage',\r\n"
		 		+ "  `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_severity` (`severity`) USING BTREE,\r\n"
		 		+ "  KEY `idx_state` (`state`) USING BTREE,\r\n"
		 		+ "  KEY `idx_rule_id` (`rule_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_project_id` (`project_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_module_id` (`module_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_asset_id` (`asset_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_dc_id` (`dc_id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;";
		 
		 String alertMessageHistory = "CREATE TABLE `alert_message_history` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
		 		+ "  `severity` varchar(64) DEFAULT NULL COMMENT '告警级别',\r\n"
		 		+ "  `summary` text DEFAULT NULL COMMENT '告警摘要',\r\n"
		 		+ "  `description` text DEFAULT NULL COMMENT '告警描述',\r\n"
		 		+ "  `labels` text DEFAULT NULL COMMENT '告警labels信息',\r\n"
		 		+ "  `start_at` datetime DEFAULT NULL COMMENT '开始时间',\r\n"
		 		+ "  `end_at` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
		 		+ "  `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired',\r\n"
		 		+ "  `rule_id` int(10) NOT NULL COMMENT '告警规则ID',\r\n"
		 		+ "  `project_id` int(10) DEFAULT NULL COMMENT '关联project id',\r\n"
		 		+ "  `module_id` int(10) DEFAULT NULL COMMENT '关联module id',\r\n"
		 		+ "  `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id',\r\n"
		 		+ "  `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
		 		+ "  `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id',\r\n"
		 		+ "  `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key',\r\n"
		 		+ "  `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式\\r\\n\\r\\ntime     username\\r\\n\\r\\nmessage',\r\n"
		 		+ "  `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_severity` (`severity`) USING BTREE,\r\n"
		 		+ "  KEY `idx_state` (`state`) USING BTREE,\r\n"
		 		+ "  KEY `idx_rule_id` (`rule_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_project_id` (`project_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_module_id` (`module_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_asset_id` (`asset_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_dc_id` (`dc_id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;";
		 
		 String alertMessageSilence = "CREATE TABLE `alert_message_silence` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
		 		+ "  `severity` varchar(64) DEFAULT NULL COMMENT '告警级别',\r\n"
		 		+ "  `summary` text DEFAULT NULL COMMENT '告警摘要',\r\n"
		 		+ "  `description` text DEFAULT NULL COMMENT '告警描述',\r\n"
		 		+ "  `labels` text DEFAULT NULL COMMENT '告警labels信息',\r\n"
		 		+ "  `start_at` datetime DEFAULT NULL COMMENT '开始时间',\r\n"
		 		+ "  `end_at` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
		 		+ "  `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired',\r\n"
		 		+ "  `rule_id` int(10) NOT NULL COMMENT '告警规则ID',\r\n"
		 		+ "  `project_id` int(10) DEFAULT NULL COMMENT '关联project id',\r\n"
		 		+ "  `module_id` int(10) DEFAULT NULL COMMENT '关联module id',\r\n"
		 		+ "  `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id',\r\n"
		 		+ "  `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
		 		+ "  `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id',\r\n"
		 		+ "  `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key',\r\n"
		 		+ "  `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式\\r\\n\\r\\ntime     username\\r\\n\\r\\nmessage',\r\n"
		 		+ "  `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF',\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_severity` (`severity`) USING BTREE,\r\n"
		 		+ "  KEY `idx_state` (`state`) USING BTREE,\r\n"
		 		+ "  KEY `idx_rule_id` (`rule_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_project_id` (`project_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_module_id` (`module_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_asset_id` (`asset_id`) USING BTREE,\r\n"
		 		+ "  KEY `idx_dc_id` (`dc_id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;";
		 
		 String alertSilenceMessageRel = "CREATE TABLE `alert_silence_message_rel` (\r\n"
		 		+ "  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
		 		+ "  `silence_conf_id` int(10) NOT NULL,\r\n"
		 		+ "  `message_id` bigint(20) NOT NULL,\r\n"
		 		+ "  `hash_key` varchar(255) NOT NULL,\r\n"
		 		+ "  PRIMARY KEY (`id`) USING BTREE\r\n"
		 		+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
		StringBuilder sb = new StringBuilder();
		sb.append(alertSilenceConf);
		sb.append(alertSeverityConf);
		sb.append(alertNotifyMethod);
		sb.append(alertNotifyLog);
		sb.append(assetAsset);
		sb.append(assetBrand);
		sb.append(assetFieldGroup);
		sb.append(assetFieldMeta);
		sb.append(assetFieldValue);
		sb.append(assetModel);
		sb.append(assetStateConf);
		sb.append(assetTypeConf);
		sb.append(dc);
		sb.append(monitorEndpoint);
		sb.append(monitorEndpointState);
		sb.append(monitorEventLog);
		sb.append(monitorModule);
		sb.append(monitorProject);
		sb.append(snmpCredential);
		sb.append(sysApiKey);
		sb.append(sysTimezone);
		sb.append(terminalCmd);
		sb.append(terminalRecord);
		sb.append(terminalSession);
		sb.append(visualChart);
		sb.append(visualChartElement);
		sb.append(visualPanel);
		sb.append(visualExpressionTmpl);
		sb.append(alertMessageHistory);
		sb.append(alertMessageSilence);
		sb.append(alertMessageActive);
		sb.append(alertSilenceMessageRel);
		sqlDao.execute(sb.toString());
	}
	
	/**
	 * alert_severity_conf
	 * asset_field_group
	 * asset_brand
	 * asset_model
	 * asset_state_conf
	 * asset_type_conf
	 * monitor_event_log
	 * sys_timezone
	 * @throws IOException 
	 * @throws SQLException 
	 * @throws ScriptException 
	 */
	public void initData() throws ScriptException, SQLException {
		Resource classPathResource = new ClassPathResource("db/init.sql");
        ScriptUtils.executeSqlScript(dataSource.getConnection(), classPathResource);
        // asset_brand表数据单独处理
 		assetBrandService.handler();
 		// asset_model表数据处理 前提先处理好brand表数据信息
 		assetModelService.handler();
 		// asset_type_conf表数据处理
 		assetTypeConfService.handler();
		/*StringBuilder sb = new StringBuilder();
		sb.append("INSERT INTO `asset_field_group`(`id`, `name`, `remark`, `build_in`, `seq`) VALUES (1, 'default', 'Default meta group', '1', '');");
		sb.append("INSERT INTO `alert_severity_conf`(`id`, `name`, `color`, `weight`, `remark`) VALUES (1, 'P1', '#f2866e', 1, '高级告警');");
		sb.append("INSERT INTO `alert_severity_conf`(`id`, `name`, `color`, `weight`, `remark`) VALUES (2, 'P2', '#f89984', 2, '中级告警');");
		sb.append("INSERT INTO `alert_severity_conf`(`id`, `name`, `color`, `weight`, `remark`) VALUES (3, 'P3', '#f7ba78', 3, '低级告警');");
		sb.append("INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (1, 'In use', '1', '1', '1', '', '1');");
		sb.append("INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (2, 'Not in storage', '0', '0', '0', '', '1');");
		sb.append("INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (3, 'Idle', '1', '0', '1', '', '1');");
		sb.append("INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (4, 'Repair', '1', '1', '0', '', '1');	");
		sb.append("INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (5, 'Scrapped', '1', '0', '0', '', '1');");
		sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (1, 0, '1', '1', 'Network devices', 'Network devices', '1', 2, 1, 1, 1, '');");
		sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (2, 0, '0', '0', 'Router', '', '1', 2, 1, 0, 0, '');");
		sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (3, 0, '0', '0', 'Firewall', '', '1', 2, 1, 0, 0, '');");
		sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (4, 0, '0', '0', 'Switch', '', '1', 2, 1, 0, 0, '');");
		sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (5, 0, '0', '1', 'Computer', '', '1', 1, 0, 0, 0, '');");
		sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (6, 0, '0', '1', 'Server', '', '1', 1, 0, 0, 0, '');");
		sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (7, 0, '1', '0', 'Virtual machine', '', '1', 1, 0, 0, 0, '');");
		sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (8, 0, '0', '0', 'ADC', '', '1', 1, 1, 0, 0, '');");
		sb.append("INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('blackbox', 0);");
		sb.append("INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('cmd', 0);");
		sb.append("INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('global', 0);");
		sb.append("INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('per-datacenter', 0);");
		sb.append("INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('snmp', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (1, 'Africa/Abidjan', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (2, 'Africa/Accra', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (3, 'Africa/Algiers', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (4, 'Africa/Bissau', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (5, 'Africa/Cairo', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (6, 'Africa/Casablanca', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (7, 'Africa/Ceuta', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (8, 'Africa/El_Aaiun', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (9, 'Africa/Johannesburg', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (10, 'Africa/Juba', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (11, 'Africa/Khartoum', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (12, 'Africa/Lagos', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (13, 'Africa/Maputo', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (14, 'Africa/Monrovia', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (15, 'Africa/Nairobi', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (16, 'Africa/Ndjamena', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (17, 'Africa/Sao_Tome', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (18, 'Africa/Tripoli', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (19, 'Africa/Tunis', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (20, 'Africa/Windhoek', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (21, 'Antarctica/Casey', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (22, 'Antarctica/Davis', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (23, 'Antarctica/DumontDUrville', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (24, 'Antarctica/Macquarie', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (25, 'Antarctica/Mawson', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (26, 'Antarctica/Palmer', -14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (27, 'Antarctica/Rothera', -10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (28, 'Antarctica/Syowa', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (29, 'Antarctica/Troll', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (30, 'Antarctica/Vostok', 21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (31, 'Asia/Almaty', 21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (32, 'Asia/Amman', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (33, 'Asia/Anadyr', 43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (34, 'Asia/Aqtau', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (35, 'Asia/Aqtobe', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (36, 'Asia/Ashgabat', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (37, 'Asia/Atyrau', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (38, 'Asia/Baghdad', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (39, 'Asia/Baku', 14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (40, 'Asia/Bangkok', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (41, 'Asia/Barnaul', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (42, 'Asia/Beirut', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (43, 'Asia/Bishkek', 21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (44, 'Asia/Brunei', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (45, 'Asia/Chita', 32400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (46, 'Asia/Choibalsan', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (47, 'Asia/Colombo', 19800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (48, 'Asia/Damascus', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (49, 'Asia/Dhaka', 21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (50, 'Asia/Dili', 32400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (51, 'Asia/Dubai', 14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (52, 'Asia/Dushanbe', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (53, 'Asia/Famagusta', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (54, 'Asia/Gaza', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (55, 'Asia/Hebron', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (56, 'Asia/Ho_Chi_Minh', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (57, 'Asia/Hong_Kong', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (58, 'Asia/Hovd', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (59, 'Asia/Irkutsk', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (60, 'Asia/Jakarta', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (61, 'Asia/Jayapura', 32400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (62, 'Asia/Jerusalem', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (63, 'Asia/Kabul', 16200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (64, 'Asia/Kamchatka', 43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (65, 'Asia/Karachi', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (66, 'Asia/Kathmandu', 20700000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (67, 'Asia/Khandyga', 32400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (68, 'Asia/Kolkata', 19800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (69, 'Asia/Krasnoyarsk', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (70, 'Asia/Kuala_Lumpur', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (71, 'Asia/Kuching', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (72, 'Asia/Macau', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (73, 'Asia/Magadan', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (74, 'Asia/Makassar', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (75, 'Asia/Manila', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (76, 'Asia/Nicosia', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (77, 'Asia/Novokuznetsk', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (78, 'Asia/Novosibirsk', 21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (79, 'Asia/Omsk', 21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (80, 'Asia/Oral', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (81, 'Asia/Pontianak', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (82, 'Asia/Pyongyang', 30600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (83, 'Asia/Qatar', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (84, 'Asia/Qostanay', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (85, 'Asia/Qyzylorda', 21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (86, 'Asia/Riyadh', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (87, 'Asia/Sakhalin', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (88, 'Asia/Samarkand', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (89, 'Asia/Seoul', 32400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (90, 'Asia/Shanghai', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (91, 'Asia/Singapore', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (92, 'Asia/Srednekolymsk', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (93, 'Asia/Taipei', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (94, 'Asia/Tashkent', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (95, 'Asia/Tbilisi', 14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (96, 'Asia/Tehran', 12600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (97, 'Asia/Thimphu', 21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (98, 'Asia/Tokyo', 32400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (99, 'Asia/Tomsk', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (100, 'Asia/Ulaanbaatar', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (101, 'Asia/Urumqi', 21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (102, 'Asia/Ust-Nera', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (103, 'Asia/Vladivostok', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (104, 'Asia/Yakutsk', 32400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (105, 'Asia/Yangon', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (106, 'Asia/Yekaterinburg', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (107, 'Asia/Yerevan', 14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (108, 'Atlantic/Azores', -3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (109, 'Atlantic/Bermuda', -14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (110, 'Atlantic/Canary', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (111, 'Atlantic/Cape_Verde', -3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (112, 'Atlantic/Faroe', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (113, 'Atlantic/Madeira', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (114, 'Atlantic/Reykjavik', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (115, 'Atlantic/South_Georgia', -7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (116, 'Atlantic/Stanley', -10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (117, 'Australia/Adelaide', 34200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (118, 'Australia/Brisbane', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (119, 'Australia/Broken_Hill', 34200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (120, 'Australia/Darwin', 34200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (121, 'Australia/Eucla', 31500000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (122, 'Australia/Hobart', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (123, 'Australia/Lindeman', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (124, 'Australia/Lord_Howe', 37800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (125, 'Australia/Melbourne', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (126, 'Australia/Perth', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (127, 'Australia/Sydney', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (128, 'Etc/GMT', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (129, 'Etc/GMT+1', -3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (130, 'Etc/GMT+10', -36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (131, 'Etc/GMT+11', -39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (132, 'Etc/GMT+12', -43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (133, 'Etc/GMT+2', -7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (134, 'Etc/GMT+3', -10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (135, 'Etc/GMT+4', -14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (136, 'Etc/GMT+5', -18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (137, 'Etc/GMT+6', -21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (138, 'Etc/GMT+7', -25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (139, 'Etc/GMT+8', -28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (140, 'Etc/GMT+9', -32400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (141, 'Etc/GMT-1', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (142, 'Etc/GMT-10', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (143, 'Etc/GMT-11', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (144, 'Etc/GMT-12', 43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (145, 'Etc/GMT-13', 46800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (146, 'Etc/GMT-14', 50400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (147, 'Etc/GMT-2', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (148, 'Etc/GMT-3', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (149, 'Etc/GMT-4', 14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (150, 'Etc/GMT-5', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (151, 'Etc/GMT-6', 21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (152, 'Etc/GMT-7', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (153, 'Etc/GMT-8', 28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (154, 'Etc/GMT-9', 32400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (155, 'Etc/UTC', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (156, 'Europe/Amsterdam', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (157, 'Europe/Andorra', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (158, 'Europe/Astrakhan', 14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (159, 'Europe/Athens', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (160, 'Europe/Belgrade', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (161, 'Europe/Berlin', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (162, 'Europe/Brussels', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (163, 'Europe/Bucharest', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (164, 'Europe/Budapest', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (165, 'Europe/Chisinau', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (166, 'Europe/Copenhagen', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (167, 'Europe/Dublin', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (168, 'Europe/Gibraltar', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (169, 'Europe/Helsinki', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (170, 'Europe/Istanbul', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (171, 'Europe/Kaliningrad', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (172, 'Europe/Kiev', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (173, 'Europe/Kirov', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (174, 'Europe/Lisbon', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (175, 'Europe/London', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (176, 'Europe/Luxembourg', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (177, 'Europe/Madrid', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (178, 'Europe/Malta', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (179, 'Europe/Minsk', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (180, 'Europe/Monaco', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (181, 'Europe/Moscow', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (182, 'Europe/Oslo', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (183, 'Europe/Paris', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (184, 'Europe/Prague', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (185, 'Europe/Riga', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (186, 'Europe/Rome', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (187, 'Europe/Samara', 14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (188, 'Europe/Saratov', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (189, 'Europe/Simferopol', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (190, 'Europe/Sofia', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (191, 'Europe/Stockholm', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (192, 'Europe/Tallinn', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (193, 'Europe/Tirane', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (194, 'Europe/Ulyanovsk', 14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (195, 'Europe/Uzhgorod', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (196, 'Europe/Vienna', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (197, 'Europe/Vilnius', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (198, 'Europe/Volgograd', 10800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (199, 'Europe/Warsaw', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (200, 'Europe/Zaporozhye', 7200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (201, 'Europe/Zurich', 3600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (202, 'Factory', 0);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (203, 'Indian/Chagos', 21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (204, 'Indian/Christmas', 25200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (205, 'Indian/Cocos', 23400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (206, 'Indian/Kerguelen', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (207, 'Indian/Mahe', 14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (208, 'Indian/Maldives', 18000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (209, 'Indian/Mauritius', 14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (210, 'Indian/Reunion', 14400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (211, 'Pacific/Apia', 46800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (212, 'Pacific/Auckland', 43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (213, 'Pacific/Bougainville', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (214, 'Pacific/Chatham', 45900000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (215, 'Pacific/Chuuk', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (216, 'Pacific/Easter', -21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (217, 'Pacific/Efate', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (218, 'Pacific/Enderbury', 46800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (219, 'Pacific/Fakaofo', 46800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (220, 'Pacific/Fiji', 43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (221, 'Pacific/Funafuti', 43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (222, 'Pacific/Galapagos', -21600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (223, 'Pacific/Gambier', -32400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (224, 'Pacific/Guadalcanal', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (225, 'Pacific/Guam', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (226, 'Pacific/Honolulu', -36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (227, 'Pacific/Kiritimati', 50400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (228, 'Pacific/Kosrae', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (229, 'Pacific/Kwajalein', 43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (230, 'Pacific/Majuro', 43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (231, 'Pacific/Marquesas', -34200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (232, 'Pacific/Nauru', 43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (233, 'Pacific/Niue', -39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (234, 'Pacific/Norfolk', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (235, 'Pacific/Noumea', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (236, 'Pacific/Pago_Pago', -39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (237, 'Pacific/Palau', 32400000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (238, 'Pacific/Pitcairn', -28800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (239, 'Pacific/Pohnpei', 39600000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (240, 'Pacific/Port_Moresby', 36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (241, 'Pacific/Rarotonga', -36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (242, 'Pacific/Tahiti', -36000000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (243, 'Pacific/Tarawa', 43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (244, 'Pacific/Tongatapu', 46800000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (245, 'Pacific/Wake', 43200000);");
		sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (246, 'Pacific/Wallis', 43200000);");
		sb.append("INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('asset_asset_export_header', '{\\r\\n	\\\"cn\\\": {\\r\\n		\\\"*资产名称\\\": \\\"资产名称,唯一标识(必填) \\\\n示例: DELL服务器\\\",\\r\\n		\\\"*SN码\\\": \\\"资产序列号,唯一标识(必填) \\\\n示例: A0420200101\\\",\\r\\n		\\\"虚拟机宿主\\\": \\\"虚拟机宿主,当资产为虚拟机时必填 \\\\n示例: DELL物理机\\\",\\r\\n		\\\"*管理ip\\\": \\\"主机地址(必填),IP格式 \\\\n示例: 172.0.0.1\\\",\\r\\n		\\\"*品牌\\\": \\\"品牌(必填) \\\\n示例: DELL\\\",\\r\\n		\\\"*型号\\\": \\\"型号(必填) \\\\n示例: DELL-D3\\\",\\r\\n		\\\"*数据中心\\\": \\\"数据中心(必填) \\\\n示例: 北京电信中心机房\\\",\\r\\n		\\\"机柜\\\": \\\"机柜 \\\\n示例: cabinet-001\\\",\\r\\n		\\\"开始U位\\\": \\\"机柜开始位置 此信息一般和机柜结束位置联合使用 \\\\n示例: 1\\\",\\r\\n		\\\"结束U位\\\": \\\"机柜结束位置 此信息一般与机柜开始位置联合使用 \\\\n示例: 2\\\",\\r\\n		\\\"*资产状态\\\": \\\"资产状态 \\\\n示例: 在库\\\",\\r\\n		\\\"*资产类型\\\": \\\"资产类型 \\\\n示例: 服务器\\\",\\r\\n		\\\"购买日期\\\": \\\"购买日期 \\\\n示例: 2020/2/25\\\",\\r\\n		\\\"属性信息\\\": \\\"资产属性信息,格式: key=value 如需填写多个请使用回车换行 \\\\n示例: NetworkCard=eth0 \\\\n user=root\\\",\\r\\n		\\\"认证服务端口\\\": \\\"ssh/telnet端口 \\\\n示例: 22/23\\\",\\r\\n		\\\"认证方式\\\":\\\"用户名密码/密钥 \\\\n示例:111111\\\",\\r\\n		\\\"用户名\\\":\\\"用户名 \\\\n示例:root\\\",\\r\\n		\\\"密码\\\":\\\"auth_type =1 : 记录登录密码 auth_type=2 : 记录密钥密码\\\",\\r\\n		\\\"密钥\\\":\\\"密钥内容\\\",\\r\\n		\\\"用户名提示\\\":\\\"telnet协议有效\\\",\\r\\n		\\\"密码提示\\\":\\\"telnet协议有效\\\",\\r\\n		\\\"snmp凭证\\\":\\\"type 开启snmp有效\\\"\\r\\n	},\\r\\n	\\\"en\\\": {\\r\\n		\\\"*Asset Name\\\": \\\"Asset name, unique identifier (required) \\\\nExample: DELL server\\\",\\r\\n		\\\"*Sn\\\": \\\"Asset serial number, unique identifier (required) \\\\nExample: A0420200101\\\",\\r\\n		\\\"*Virtual machine host\\\": \\\"Virtual machine host, required when the asset is a virtual machine \\\\nExample: DELL physical machine\\\",\\r\\n		\\\"*Management ip\\\": \\\"Host address (required), IP format \\\\nExample: 172.0.0.1\\\",\\r\\n		\\\"*Brand\\\": \\\"Brand (required) \\\\nExample: DELL\\\",\\r\\n		\\\"*Model\\\": \\\"Model (required) \\\\nExample: DELL-D3\\\",\\r\\n		\\\"*DC\\\": \\\"Data Center (Required) \\\\nExample: Beijing Telecom Center Computer Room\\\",\\r\\n		\\\"Cabinet\\\": \\\"Cabinet \\\\nExample: cabinet-001\\\",\\r\\n		\\\"Cabinet Start\\\": \\\"Cabinet start position This information is generally used in conjunction with the cabinet end position \\\\nExample: 1\\\",\\r\\n		\\\"Cabinet End\\\": \\\"Cabinet end position This information is generally used in conjunction with the cabinet start position \\\\nExample: 2\\\",\\r\\n		\\\"*Asset state\\\": \\\"Asset status \\\\nExample: In stock\\\",\\r\\n		\\\"*Asset type\\\": \\\"Asset Type\\\\nExample: Server\\\",\\r\\n		\\\"Purchase date\\\": \\\"Purchase date \\\\nExample: 2020/2/25\\\",\\r\\n		\\\"Field Information\\\": \\\"Asset field information, format: key=value If you need to fill in more than one, please use carriage return and line feed \\\\nExample: NetworkCard=eth0 \\\\n user=root\\\",\\r\\n		\\\"Auth protocol Port\\\": \\\"ssh/telnet \\\\nExample: 22/23\\\",\\r\\n		\\\"Auth Type\\\":\\\"User name password / pri key \\\\nExample: 111111\\\",\\r\\n		\\\"Auth Username\\\":\\\"username \\\\nExample: root\\\",\\r\\n		\\\"Auth Pin\\\":\\\"auth_type =1 : pin value  auth_type=2 : pri key pin\\\",\\r\\n		\\\"Auth Pri Key\\\":\\\"pri key content\\\",\\r\\n		\\\"Auth User Tip\\\":\\\"telnet protocol valid\\\",\\r\\n		\\\"Auth Pin Tip\\\":\\\"telnet protocol valid\\\",\\r\\n		\\\"Snmp Credential\\\":\\\"snmp protocol valid\\\"\\r\\n	}\\r\\n}', 1, NULL);\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('asset_chart_tpl', '{\\\"name\\\":\\\"{{asset.sn}}\\\",\\\"type\\\":\\\"assetInfo\\\",\\\"span\\\":12,\\\"height\\\":400,\\\"unit\\\":2}', 1, NULL);\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('asset_ping_from', '2', 1, '1: global\\r\\n\\r\\n2: per-datacenter\\r\\n\\r\\n默认:1');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('confagent_name', '{\\\"centos\\\":\\\"confagent-v2.0-x86.rpm\\\",\\\"ubuntu\\\":\\\"confagent-v2.0-x86.zip\\\"}', 1, 'confagent 下载文件名称');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_auth_account', '', 1, '');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_auth_password', '', 1, '');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_host', '', 1, '');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_port', '25', 1, '');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_security_type', 'NONE', 1, 'NONE SSL TLS');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_test_account', '', 1, '');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_timeout', '10', 1, '默认:10');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('endpoint_chart_tpl', '{\\\"name\\\":\\\"{{endpoint.name}}\\\",\\\"type\\\":\\\"endpointInfo\\\",\\\"span\\\":12,\\\"height\\\":400,\\\"unit\\\":2}', 1, NULL);\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('expretmpl_export_header', '{\\\"cn\\\":{\\\"*名称\\\":\\\"模板名称(必填) \\\\n示例: CPU利用率模板\\\",\\\"组名\\\":\\\"组名 \\\\n示例: base,默认值: default\\\",\\\"*表达式\\\":\\\"表达式内容(必填) \\\\n示例: node_cpu_usage(asset=\\\\\\\"{{asset.host}}\\\\\\\",device=\\\\\\\"{{device}}\\\\\\\")\\\",\\\"描述\\\":\\\"描述 \\\\n示例: node_export CPU利用率模板\\\"},\\\"en\\\":{\\\"*Name\\\":\\\"Template name (required) \\\\nExample: CPU utilization template\\\",\\\"Group Name\\\":\\\"Group Name \\\\nExample: base, Default value: default\\\",\\\"*Expression\\\":\\\"Expression content (required) Optional: node_cpu_usage(asset=\\\\\\\"{{asset.host}}\\\\\\\",device=\\\\\\\"{{device}}\\\\\\\")\\\",\\\"Remark\\\":\\\"Remark \\\\nExample: node_export CPU utilization template\\\"}}', 1, '表达式导入导出模板表头信息');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('license', '<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><license><product><maximumAssets>2000</maximumAssets><name>NEZHA</name><version>base</version></product><endDate>2021-06-03T14:52:43Z</endDate><signature><digestValue>3403d697d45c594a0d147d556d94ad087272830c</digestValue><signatureValue>35af0e65b3b6d6474db62359a42adf685413144e3ff57f3551f33c54614ed8eb4d705efd25ca873a73af08912242b74d3272cef149ac0b39ac4247e7263f9b395c1892aea7dce0d941ea14ee901f052192ce555c4c438510b31d6fef30b109125a42b19fbcf3190482adab2ffc64d01c31f3dd020a712fc97138c3c52df41f0116c56543faddba8a7393581dee612fec9646ca4edb6f46bf2894eeaff1436feb126ce7155dd8b5514038320b297fab40ca4ed0402eb71951e8b00185fe7fe7f0f0ba13de3d4dc9416a5762214bb8f2bfa7ec688bd119aeaa2a4c4153383b64a463892d63301070c295404538b54f8de7d36ca7fbf40011b9e057cbb1d4a15147</signatureValue></signature><contract>[email protected]</contract><by>abc</by><genDate>2021-04-16T13:52:38Z</genDate><comment>test license</comment><tokens/><licenseId>111</licenseId><startDate>2021-03-03T14:52:43Z</startDate><customer>zhangsan</customer></license>', 1, '3403d697d45c594a0d147d556d94ad087272830c');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('license_token', 'abbbb', 1, NULL);\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('ldap_timeout', '30', 1, '超时时间秒');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('monitor_endpoint_export_header', '{\\\"cn\\\":{\\\"*系统\\\":\\\"系统名称(必填) \\\\n示例: Nezha\\\",\\\"*组件\\\":\\\"组件名称(必填) \\\\n示例: node_exporter\\\",\\\"名称\\\":\\\"实例名称 \\\\n示例: node_exporter\\\",\\\"资产名称\\\":\\\"资产名称(非必填) 与 主机地址 不能同时为空 \\\\n示例: A0420200101\\\",\\\"配置\\\":\\\"实例配置,JSON格式, \\\\n示例: {\\\\\\\"key\\\\\\\":\\\\\\\"value\\\\\\\"}\\\",\\\"启用\\\":\\\"启用状态(非必填) 可选 0:停用 1:启用,为空时默认为1 \\\\n示例: 1\\\"},\\\"en\\\":{\\\"*Project Name\\\":\\\"Project Name(Required) \\\\nExample: Nezha\\\",\\\"*Module Name\\\":\\\"Module Name(Required) \\\\nExample: node_exporter\\\",\\\"Name\\\":\\\"Endpoint name \\\\nExample: node_exporter\\\",\\\"Asset Name\\\":\\\"Asset name(Not required) And host address cannot be empty at the same time \\\\n示例: A0420200101\\\",\\\"Configs\\\":\\\"Endpoint Configs,JSON format, \\\\nExample: {\\\\\\\"key\\\\\\\":\\\\\\\"value\\\\\\\"}\\\",\\\"Enabled\\\":\\\"Enable state (not required) Optional values 0: Disable 1: Enable, when empty, the default is 1 \\\\nExample: 1\\\"}}', 1, 'monitor endpoint 导入表头');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prometheus_federation_enabled', '1', 1, '配置prometheus是否开启联邦模式,1:开启,0:关闭(界面禁用 添加选择 per-datacenter agent,所有endpoint 配置信息 hash 分布到 global prometheus)');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_cmd_tmpl', 'OPTION=\\\" --config.file=\\'/opt/nezha/nz-confagent/prometheus/prometheus.yml\\' --web.listen-address=\\'127.0.0.1:9090\\' --web.enable-admin-api --storage.tsdb.path=\\'/data/prometheusData\\'  --web.enable-lifecycle --storage.tsdb.retention.time=${storageDays}d \\\"', 1, 'prometheus 启动参数模板');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_rule_tmpl', '{\\r\\n	\\\"groups\\\": [{\\r\\n		\\\"name\\\": \\\"alertRule\\\",\\r\\n		\\\"rules\\\": [\\r\\n            <#if endpointAlert>\\r\\n            {\\r\\n				\\\"alert\\\": \\\"0\\\",\\r\\n				\\\"expr\\\": \\\"up{endpoint!=\\'\\'}>-1\\\",\\r\\n				\\\"for\\\": \\\"30s\\\",\\r\\n				\\\"annotations\\\": {\\r\\n					\\\"summary\\\": \\\"{{$value}}\\\"\\r\\n				}\\r\\n			}, \\r\\n             </#if>\\r\\n             <#list ruleList as rule>\\r\\n            {\\r\\n				\\\"alert\\\":  ${rule.id?c},\\r\\n				\\\"expr\\\": \\\"(${rule.expr})${rule.operator}${rule.threshold}\\\",\\r\\n				\\\"for\\\": \\\"${rule.last}s\\\",\\r\\n				\\\"labels\\\": {\\r\\n					\\\"severity\\\": \\\"${rule.severity_name}\\\",\\r\\n					\\\"severity_id\\\": ${rule.severity_id?c}\\r\\n				},\\r\\n				\\\"annotations\\\": {\\r\\n					\\\"summary\\\": <#if rule.summary?default(\\\"\\\")?trim?length gt 1>\\r\\n                                \\\"${rule.summary}\\\",\\r\\n                      <#else>\\\"\\\",</#if>\\r\\n					\\\"description\\\": <#if rule.description?default(\\\"\\\")?trim?length gt 1>\\r\\n                                \\\"${rule.description}\\\"\\r\\n                      <#else>\\\"\\\"</#if>\\r\\n					\\r\\n				}\\r\\n			}\\r\\n			<#sep>,</#sep>\\r\\n		</#list>]\\r\\n	}]\\r\\n}', 1, 'prometheus rule文件模板');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_yml_tmpl', '{\\r\\n    \\\"global\\\": {\\r\\n        \\\"scrape_interval\\\": \\\"${scrape_interval}s\\\",\\r\\n        \\\"scrape_timeout\\\": 	<#if scrape_timeout??> \\r\\n								\\\"${scrape_timeout}s\\\",\\r\\n						    <#else>\\r\\n								\\\"10s\\\",\\r\\n							</#if>\\r\\n        \\\"evaluation_interval\\\": \\\"${scrape_interval}s\\\"\\r\\n    },\\r\\n	\\r\\n	<#-- alert 配置 -->\\r\\n	<#if isAlert>\\r\\n	\\\"alerting\\\": {\\r\\n		\\\"alertmanagers\\\": [{\\r\\n			\\\"path_prefix\\\": \\\"${path_prefix}\\\",\\r\\n			\\\"static_configs\\\": [{\\r\\n				\\\"targets\\\": [\\\"${alert_url}\\\"]\\r\\n			}]\\r\\n		}],\\r\\n		\\\"alert_relabel_configs\\\": [{\\r\\n			\\\"regex\\\": \\\"instance\\\",\\r\\n			\\\"action\\\": \\\"labeldrop\\\"\\r\\n		}, {\\r\\n			\\\"regex\\\": \\\"replica\\\",\\r\\n			\\\"action\\\": \\\"labeldrop\\\"\\r\\n		}]\\r\\n	},\\r\\n	\\\"rule_files\\\": [\\\"rule.yml\\\"],\\r\\n	</#if>\\r\\n	\\r\\n	\\r\\n	\\r\\n	<#-- per-datacenter 配置 -->\\r\\n	<#if !isGlobal>\\r\\n    \\\"scrape_configs\\\": [\\r\\n		<#list endpointList as endpoint>\\r\\n			{\\r\\n				\\\"job_name\\\": ${endpoint.id?c},\\r\\n				\\\"metrics_path\\\": <#if endpoint.config.metrics_path?default(\\\"\\\")?trim?length gt 0>\\r\\n									\\\"${endpoint.config.metrics_path}\\\",\\r\\n								<#else>\\r\\n									\\\"/metrics\\\",\\r\\n								</#if>\\r\\n				\\\"scrape_interval\\\": 	<#if endpoint.config.scrape_interval?default(\\\"\\\")?trim?length gt 0>\\r\\n										\\\"${endpoint.config.scrape_interval}s\\\",\\r\\n									<#else>\\r\\n										\\\"${scrape_interval}s\\\",\\r\\n									</#if>\\r\\n				\\\"scrape_timeout\\\": 	<#if endpoint.config.scrape_timeout?default(\\\"\\\")?trim?length gt 0>\\r\\n										\\\"${endpoint.config.scrape_timeout}s\\\",\\r\\n									<#else>\\r\\n										<#if scrape_timeout??> \\r\\n											\\\"${scrape_timeout}s\\\",\\r\\n										<#else>\\r\\n											\\\"10s\\\",\\r\\n										</#if>\\r\\n									</#if>\\r\\n\\r\\n\\r\\n\\r\\n				<#if endpoint.config.basic_auth??&& (endpoint.config.basic_auth?size >0)>\\r\\n					<#if endpoint.config.basic_auth.username?default(\\\"\\\")?trim?length gt 0 && endpoint.config.basic_auth.password?default(\\\"\\\")?trim?length gt 0>\\r\\n					\\\"basic_auth\\\":{\\r\\n						\\\"username\\\": \\\"${endpoint.config.basic_auth.username}\\\",\\r\\n						\\\"password\\\": \\\"${endpoint.config.basic_auth.password}\\\"\\r\\n						},\\r\\n					</#if>\\r\\n				</#if>\\r\\n				\\r\\n				\\r\\n				<#if endpoint.config.bearer_token??&&endpoint.config.bearer_token?trim?length gt 0>\\r\\n				\\\"authorization\\\":{\\r\\n						\\\"type\\\":\\\"Bearer\\\",\\r\\n						\\\"credentials\\\":\\\"${endpoint.config.bearer_token}\\\"\\r\\n					},\\r\\n				</#if>\\r\\n\\r\\n				\\r\\n				<#-- params 不为空且类型为 http ,添加 params -->\\r\\n				<#if endpoint.config.params??&& (endpoint.config.params?size >0) && endpoint.module.type == \\\"http\\\">\\r\\n				\\\"params\\\":{\\r\\n					<#list endpoint.config.params?keys as itemKey>\\r\\n					\\\"${itemKey}\\\":[\\r\\n						<#list endpoint.config.params[itemKey] as pojo>\\r\\n							\\\"${pojo}\\\"\\r\\n							<#sep>,</#sep>\\r\\n						</#list>\\r\\n						]\\r\\n						<#sep>,</#sep>\\r\\n					</#list>\\r\\n				},\\r\\n				<#elseif endpoint.module.type == \\\"snmp\\\">\\r\\n				<#-- 类型是 snmp ,组织 param 数据 , 原来params弃用,因为 snmp_exporter 不支持其他参数 -->\\r\\n			   \\\"params\\\":{\\r\\n					\\\"target\\\":[ \\\"${endpoint.config.host}:${endpoint.config.port?c}\\\" ],\\r\\n					\\\"module\\\":[ \\\"${endpoint.module.name}\\\" ]\\r\\n				},\\r\\n				</#if>\\r\\n				\\r\\n				\\\"static_configs\\\": [{\\r\\n					\\\"targets\\\": [<#if endpoint.module.type == \\\"http\\\">\\r\\n									\\\"${endpoint.config.host}:${endpoint.config.port?c}\\\"\\r\\n								<#else>\\r\\n									\\\"127.0.0.1:9116\\\"\\r\\n								</#if>\\r\\n								],\\r\\n					\\\"labels\\\": {\\r\\n						\\\"datacenter\\\": 	\\\"${endpoint.dc.name}\\\",\\r\\n                        \\\"datacenter_id\\\":${endpoint.dc.id?c},\\r\\n						\\r\\n						\\\"project\\\": 		\\\"${endpoint.project.name}\\\",\\r\\n						\\\"project_id\\\":   ${endpoint.project.id?c},\\r\\n						\\r\\n						\\\"asset\\\": 		\\\"${endpoint.asset.name}\\\",\\r\\n						\\\"asset_id\\\":     ${endpoint.asset.id?c},\\r\\n						\\r\\n						\\\"module\\\": 		\\\"${endpoint.module.name}\\\",\\r\\n						\\\"module_id\\\":    ${endpoint.module.id?c},\\r\\n						\\r\\n						\\\"endpoint\\\":     \\\"${endpoint.name}\\\",\\r\\n						\\\"endpoint_id\\\":  ${endpoint.id?c},\\r\\n						\\r\\n						\\\"nz_agent_id\\\":  ${endpoint.promserver.id?c}\\r\\n												\\r\\n										\\r\\n										<#if endpoint.config.labels??&& (endpoint.config.labels?size >0)>\\r\\n											,\\r\\n										</#if>\\r\\n										<#-- 补充用户自定义 Labels -->\\r\\n										<#if endpoint.config.labels??&& (endpoint.config.labels?size >0)>\\r\\n											<#list endpoint.config.labels?keys as key>\\r\\n												<#if key != \\\"datacenter\\\" && key != \\\"datacenter_id\\\" && key != \\\"project\\\" && key != \\\"project_id\\\" && key != \\\"asset\\\" && key != \\\"asset_id\\\" && key != \\\"module\\\" && key != \\\"module_id\\\" && key != \\\"endpoint\\\" && key != \\\"endpoint_id\\\">\\r\\n													\\\"${key}\\\":\\\"${endpoint.config.labels[key]}\\\"<#sep>,</#sep>\\r\\n												</#if>\\r\\n											 </#list>\\r\\n										</#if>\\r\\n					}\\r\\n				}],\\r\\n				\\\"relabel_configs\\\": [\\r\\n					{\\r\\n						\\\"regex\\\": \\\"instance\\\",\\r\\n						\\\"action\\\": \\\"labeldrop\\\"\\r\\n					},\\r\\n					{\\r\\n						\\\"regex\\\": \\\"job\\\",\\r\\n						\\\"action\\\": \\\"labeldrop\\\"\\r\\n					}\\r\\n				],\\r\\n				\\\"metric_relabel_configs\\\": [\\r\\n					{\\r\\n						\\\"regex\\\": \\\"instance\\\",\\r\\n						\\\"action\\\": \\\"labeldrop\\\"\\r\\n					}\\r\\n				]\\r\\n			}\\r\\n			<#sep>,</#sep>\\r\\n		</#list>\\r\\n		\\r\\n		<#-- ping 配置 -->\\r\\n		\\r\\n		<#if endpointList??&&(endpointList?size>0)>\\r\\n		,\\r\\n		</#if>\\r\\n		\\r\\n		<#list assetList as asset>\\r\\n		{\\r\\n			\\\"job_name\\\": 	\\\"asset_ping_${asset.id?c}\\\",\\r\\n			\\\"metrics_path\\\": \\\"/probe\\\",\\r\\n			\\\"scrape_interval\\\": 	<#if asset.assetPingInterval?default(\\\"\\\")?trim?length gt 0>\\r\\n									\\\"${asset.assetPingInterval}s\\\",\\r\\n								<#else>\\r\\n									\\\"${scrape_interval}s\\\",\\r\\n								</#if>\\r\\n			\\\"scrape_timeout\\\": 	<#if asset.scrape_timeout?default(\\\"\\\")?trim?length gt 0>\\r\\n									\\\"${asset.scrape_timeout}s\\\",\\r\\n								<#else>\\r\\n									<#if scrape_timeout??> \\r\\n										\\\"${scrape_timeout}s\\\",\\r\\n									<#else>\\r\\n										\\\"10s\\\",\\r\\n									</#if>\\r\\n								</#if>\\r\\n            \\\"params\\\":	{\\r\\n				\\\"target\\\":[ \\\"${asset.manageIp}\\\" ],\\r\\n				\\\"module\\\":[ \\\"ping\\\" ]\\r\\n			},\\r\\n			\\\"static_configs\\\": [{\\r\\n				\\\"targets\\\": [\\\"127.0.0.1:9115\\\"],\\r\\n				\\\"labels\\\": {\\r\\n					\\\"datacenter\\\": 	\\\"${asset.dc.name}\\\",\\r\\n					\\\"host\\\": 	  	\\\"${asset.manageIp}\\\",\\r\\n					\\\"module\\\":       \\\"ping\\\",\\r\\n					\\\"source_ip\\\":    \\\"${asset.promserver.host}\\\",\\r\\n					\\\"nz_agent_id\\\":  ${asset.promserver.id?c}\\r\\n				}\\r\\n			}],\\r\\n			\\\"relabel_configs\\\": [\\r\\n					{\\r\\n						\\\"regex\\\": \\\"instance\\\",\\r\\n						\\\"action\\\": \\\"labeldrop\\\"\\r\\n					}\\r\\n				],\\r\\n			\\\"metric_relabel_configs\\\": [\\r\\n				{\\r\\n					\\\"regex\\\": \\\"instance\\\",\\r\\n					\\\"action\\\": \\\"labeldrop\\\"\\r\\n				}\\r\\n			]\\r\\n		}\\r\\n		<#sep>,</#sep>\\r\\n		</#list>\\r\\n    ]\\r\\n	<#else>\\r\\n	<#-- global 配置 -->\\r\\n	\\\"scrape_configs\\\": [\\r\\n		<#list jobList as jobPojo>\\r\\n			{\\r\\n			   \\\"job_name\\\": \\\"${jobPojo.job_name}\\\",\\r\\n				<#if jobPojo.isFederate> \\r\\n				\\\"honor_labels\\\": ${jobPojo.honor_labels},\\r\\n				\\\"params\\\": {\\r\\n					\\\"match[]\\\": [\\r\\n						<#-- 开启联邦 -->\\r\\n					    <#if jobPojo.fedeEnabled>\\r\\n							<#if jobPojo.scrapePing> \\r\\n								\\\"{job=~\\\\\\\"asset_ping_.+\\\\\\\",nz_agent_id != \\\\\\\"${jobPojo.excludeAgentId}\\\\\\\"}\\\"\\r\\n							<#else>\\r\\n								\\\"{__name__=~\\\\\\\".+\\\\\\\",nz_agent_id != \\\\\\\"${jobPojo.excludeAgentId}\\\\\\\"}\\\"\\r\\n							</#if>\\r\\n						<#else>\\r\\n							<#-- 联邦关闭,抓取所有指标即可 -->\\r\\n							\\\"{__name__=~\\\\\\\".+\\\\\\\",nz_agent_id != \\\\\\\"${jobPojo.excludeAgentId}\\\\\\\"}\\\"\\r\\n						</#if>\\r\\n					]\\r\\n				},\\r\\n				\\\"authorization\\\":{\\r\\n					\\\"type\\\":\\\"Bearer\\\",\\r\\n					\\\"credentials\\\":\\\"${jobPojo.token}\\\"\\r\\n				},\\r\\n				</#if>\\r\\n				\\\"metrics_path\\\": <#if jobPojo.metrics_path?default(\\\"\\\")?trim?length gt 0>\\r\\n									\\\"${jobPojo.metrics_path}\\\",\\r\\n								<#else>\\r\\n									\\\"/metrics\\\",\\r\\n								</#if>\\r\\n				\\\"static_configs\\\":[\\r\\n					<#list jobPojo.staticConfigList as staticConf >\\r\\n						{\\r\\n						  \\\"targets\\\": [\\r\\n								<#list staticConf.targets as targetConf>\\r\\n										\\\"${targetConf}\\\"<#sep>,</#sep>\\r\\n								</#list>\\r\\n							]\\r\\n						<#if staticConf.labels ??&& (staticConf.labels?size >0)>\\r\\n						   ,\\r\\n						   \\\"labels\\\": {\\r\\n								<#list staticConf.labels?keys as itemKey>\\r\\n									\\\"${itemKey}\\\":<#if staticConf.labels[itemKey]?default(\\\"\\\")?trim?length gt 0>\\r\\n													\\\"${staticConf.labels[itemKey]}\\\"\\r\\n												  <#else>\\\"\\\"</#if><#sep>,</#sep>\\r\\n								</#list>\\r\\n							} \\r\\n						</#if>\\r\\n						}<#sep>,</#sep>\\r\\n					</#list>\\r\\n					],\\r\\n				\\\"relabel_configs\\\": [\\r\\n					{\\r\\n						\\\"regex\\\": \\\"job\\\",\\r\\n						\\\"action\\\": \\\"labeldrop\\\"\\r\\n					}\\r\\n					<#if jobPojo.instanceRelabel> \\r\\n					,\\r\\n					{\\r\\n						\\\"regex\\\": \\\"instance\\\",\\r\\n						\\\"action\\\": \\\"labeldrop\\\"\\r\\n					}\\r\\n					</#if>\\r\\n				],\\r\\n				\\\"metric_relabel_configs\\\": [\\r\\n					{\\r\\n						\\\"regex\\\": \\\"instance\\\",\\r\\n						\\\"action\\\": \\\"labeldrop\\\"\\r\\n					}\\r\\n				]\\r\\n			}<#sep>,</#sep>\\r\\n		</#list>\\r\\n		\\r\\n		<#-- ping 配置 -->\\r\\n		\\r\\n		<#if jobList??&&(jobList?size>0)>\\r\\n		,\\r\\n		</#if>\\r\\n		\\r\\n		<#list assetList as asset>\\r\\n		{\\r\\n			\\\"job_name\\\": 	\\\"asset_ping_${asset.id?c}\\\",\\r\\n			\\\"metrics_path\\\": \\\"/probe\\\",\\r\\n			\\\"scrape_interval\\\": 	<#if asset.assetPingInterval?default(\\\"\\\")?trim?length gt 0>\\r\\n									\\\"${asset.assetPingInterval}s\\\",\\r\\n								<#else>\\r\\n									\\\"${scrape_interval}s\\\",\\r\\n								</#if>\\r\\n			\\\"scrape_timeout\\\": 	<#if asset.scrape_timeout?default(\\\"\\\")?trim?length gt 0>\\r\\n									\\\"${asset.scrape_timeout}s\\\",\\r\\n								<#else>\\r\\n									<#if scrape_timeout??> \\r\\n										\\\"${scrape_timeout}s\\\",\\r\\n									<#else>\\r\\n										\\\"10s\\\",\\r\\n									</#if>\\r\\n								</#if>\\r\\n            \\\"params\\\":	{\\r\\n				\\\"target\\\":[ \\\"${asset.manageIp}\\\" ],\\r\\n				\\\"module\\\":[ \\\"ping\\\" ]\\r\\n			},\\r\\n			\\\"static_configs\\\": [{\\r\\n				\\\"targets\\\": [\\\"127.0.0.1:9115\\\"],\\r\\n				\\\"labels\\\": {\\r\\n					\\\"datacenter\\\": 	\\\"${asset.dc.name}\\\",\\r\\n					\\\"host\\\": 	  	\\\"${asset.manageIp}\\\",\\r\\n					\\\"module\\\":       \\\"ping\\\",\\r\\n					\\\"source_ip\\\":    \\\"${asset.promserver.host}\\\",\\r\\n					\\\"nz_agent_id\\\":  ${asset.promserver.id?c}\\r\\n				}\\r\\n			}],\\r\\n			\\\"relabel_configs\\\": [\\r\\n					{\\r\\n						\\\"regex\\\": \\\"instance\\\",\\r\\n						\\\"action\\\": \\\"labeldrop\\\"\\r\\n					}\\r\\n				],\\r\\n			\\\"metric_relabel_configs\\\": [\\r\\n				{\\r\\n					\\\"regex\\\": \\\"instance\\\",\\r\\n					\\\"action\\\": \\\"labeldrop\\\"\\r\\n				}\\r\\n			]\\r\\n		}\\r\\n		<#sep>,</#sep>\\r\\n		</#list>\\r\\n		\\r\\n		\\r\\n		<#if ( jobList??&&(jobList?size>0)) ||  assetList??&&(assetList?size>0)>\\r\\n		,\\r\\n		</#if>\\r\\n		\\r\\n		<#list endpointList as endpoint>\\r\\n			{\\r\\n				\\\"job_name\\\": ${endpoint.id?c},\\r\\n				\\\"metrics_path\\\": <#if endpoint.config.metrics_path?default(\\\"\\\")?trim?length gt 0>\\r\\n									\\\"${endpoint.config.metrics_path}\\\",\\r\\n								<#else>\\r\\n									\\\"/metrics\\\",\\r\\n								</#if>\\r\\n				\\\"scrape_interval\\\": 	<#if endpoint.config.scrape_interval?default(\\\"\\\")?trim?length gt 0>\\r\\n										\\\"${endpoint.config.scrape_interval}s\\\",\\r\\n									<#else>\\r\\n										\\\"${scrape_interval}s\\\",\\r\\n									</#if>\\r\\n				\\\"scrape_timeout\\\": 	<#if endpoint.config.scrape_timeout?default(\\\"\\\")?trim?length gt 0>\\r\\n										\\\"${endpoint.config.scrape_timeout}s\\\",\\r\\n									<#else>\\r\\n										<#if scrape_timeout??> \\r\\n											\\\"${scrape_timeout}s\\\",\\r\\n										<#else>\\r\\n											\\\"10s\\\",\\r\\n										</#if>\\r\\n									</#if>\\r\\n\\r\\n\\r\\n\\r\\n				<#if endpoint.config.basic_auth??&& (endpoint.config.basic_auth?size >0)>\\r\\n					<#if endpoint.config.basic_auth.username?default(\\\"\\\")?trim?length gt 0 && endpoint.config.basic_auth.password?default(\\\"\\\")?trim?length gt 0>\\r\\n					\\\"basic_auth\\\":{\\r\\n						\\\"username\\\": \\\"${endpoint.config.basic_auth.username}\\\",\\r\\n						\\\"password\\\": \\\"${endpoint.config.basic_auth.password}\\\"\\r\\n						},\\r\\n					</#if>\\r\\n				</#if>\\r\\n				\\r\\n				\\r\\n				<#if endpoint.config.bearer_token??&&endpoint.config.bearer_token?trim?length gt 0>\\r\\n				\\\"authorization\\\":{\\r\\n						\\\"type\\\":\\\"Bearer\\\",\\r\\n						\\\"credentials\\\":\\\"${endpoint.config.bearer_token}\\\"\\r\\n					},\\r\\n				</#if>\\r\\n\\r\\n				\\r\\n				<#-- params 不为空且类型为 http ,添加 params -->\\r\\n				<#if endpoint.config.params??&& (endpoint.config.params?size >0) && endpoint.module.type == \\\"http\\\">\\r\\n				\\\"params\\\":{\\r\\n					<#list endpoint.config.params?keys as itemKey>\\r\\n					\\\"${itemKey}\\\":[\\r\\n						<#list endpoint.config.params[itemKey] as pojo>\\r\\n							\\\"${pojo}\\\"\\r\\n							<#sep>,</#sep>\\r\\n						</#list>\\r\\n						]\\r\\n						<#sep>,</#sep>\\r\\n					</#list>\\r\\n				},\\r\\n				<#elseif endpoint.module.type == \\\"snmp\\\">\\r\\n				<#-- 类型是 snmp ,组织 param 数据 , 原来params弃用,因为 snmp_exporter 不支持其他参数 -->\\r\\n			   \\\"params\\\":{\\r\\n					\\\"target\\\":[ \\\"${endpoint.config.host}:${endpoint.config.port?c}\\\" ],\\r\\n					\\\"module\\\":[ \\\"${endpoint.module.name}\\\" ]\\r\\n				},\\r\\n				</#if>\\r\\n				\\r\\n				\\\"static_configs\\\": [{\\r\\n					\\\"targets\\\": [<#if endpoint.module.type == \\\"http\\\">\\r\\n									\\\"${endpoint.config.host}:${endpoint.config.port?c}\\\"\\r\\n								<#else>\\r\\n									\\\"127.0.0.1:9116\\\"\\r\\n								</#if>\\r\\n								],\\r\\n					\\\"labels\\\": {\\r\\n						\\\"datacenter\\\": 	\\\"${endpoint.dc.name}\\\",\\r\\n                        \\\"datacenter_id\\\":${endpoint.dc.id?c},\\r\\n						\\r\\n						\\\"project\\\": 		\\\"${endpoint.project.name}\\\",\\r\\n						\\\"project_id\\\":   ${endpoint.project.id?c},\\r\\n						\\r\\n						\\\"asset\\\": 		\\\"${endpoint.asset.name}\\\",\\r\\n						\\\"asset_id\\\":     ${endpoint.asset.id?c},\\r\\n						\\r\\n						\\\"module\\\": 		\\\"${endpoint.module.name}\\\",\\r\\n						\\\"module_id\\\":    ${endpoint.module.id?c},\\r\\n						\\r\\n						\\\"endpoint\\\":     \\\"${endpoint.name}\\\",\\r\\n						\\\"endpoint_id\\\":  ${endpoint.id?c},\\r\\n						\\r\\n						\\\"nz_agent_id\\\":  ${endpoint.promserver.id?c}\\r\\n												\\r\\n										\\r\\n										<#if endpoint.config.labels??&& (endpoint.config.labels?size >0)>\\r\\n											,\\r\\n										</#if>\\r\\n										<#-- 补充用户自定义 Labels -->\\r\\n										<#if endpoint.config.labels??&& (endpoint.config.labels?size >0)>\\r\\n											<#list endpoint.config.labels?keys as key>\\r\\n												<#if key != \\\"datacenter\\\" && key != \\\"datacenter_id\\\" && key != \\\"project\\\" && key != \\\"project_id\\\" && key != \\\"asset\\\" && key != \\\"asset_id\\\" && key != \\\"module\\\" && key != \\\"module_id\\\" && key != \\\"endpoint\\\" && key != \\\"endpoint_id\\\">\\r\\n													\\\"${key}\\\":\\\"${endpoint.config.labels[key]}\\\"<#sep>,</#sep>\\r\\n												</#if>\\r\\n											 </#list>\\r\\n										</#if>\\r\\n					}\\r\\n				}],\\r\\n				\\\"relabel_configs\\\": [\\r\\n					{\\r\\n						\\\"regex\\\": \\\"instance\\\",\\r\\n						\\\"action\\\": \\\"labeldrop\\\"\\r\\n					},\\r\\n					{\\r\\n						\\\"regex\\\": \\\"job\\\",\\r\\n						\\\"action\\\": \\\"labeldrop\\\"\\r\\n					}\\r\\n				],\\r\\n				\\\"metric_relabel_configs\\\": [\\r\\n					{\\r\\n						\\\"regex\\\": \\\"instance\\\",\\r\\n						\\\"action\\\": \\\"labeldrop\\\"\\r\\n					}\\r\\n				]\\r\\n			}\\r\\n			<#sep>,</#sep>\\r\\n		</#list>\\r\\n	\\r\\n	]\\r\\n	</#if>\\r\\n}', 1, 'prometheus config文件模板');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('session_timeout', '30', 1, '默认:30,不小于 15 单位:minute');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('system_logo', '', 1, NULL);\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('unsaved_change', 'on', 1, '未保存提示开关');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_record_local_retention', '365', 1, '默认:365,单位:天,record数据保留天数');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_telnet_pin_tip', 'assword:', 1, '默认:assword:');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_telnet_user_tip', 'ogin:', 1, '默认:ogin:');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_timeout', '30', 1, '默认:30,单位:minute');\r\n"
				+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('snmp_trap_listen_port', '160', 1, 'snmp trap接收端口');\r\n"
				+ "update sys_config set param_key =\"default_scrape_interval\" where param_key=\"scrape_interval\";\r\n"
				+ "update sys_config set param_key =\"default_scrape_timeout\" where param_key=\"scrape_timeout\";\r\n"
				+ "update sys_config set param_value =\"Asia/Almaty\" where param_key=\"timezone\";\r\n"
				);
		// 修改sys_user表数据 初始化name字段内容
		sb.append("update sys_user set name = username;");
		sqlDao.execute(sb.toString());
		*/
	}
	
	public void transferData() {
		// dc数据同步
		dcService.handler();
		// 资产数据同步  snmp认证表数据同步  tag相关数据同步
		assetAssetService.handler();
		
		// 告警相关数据同步
		alertMessageService.handler();
		
		// project module endpoint 数据同步
		endpointService.handler();
		
		// 图表相关数据同步
		chartService.handler();
				
		// 将原来数据库的数据数据还原
		this.dataRestore();
		
		// project topo相关图表数据同步
		projectTopoService.handler();
	}
	
	public void dataRestore() {
		StringBuilder sb =new StringBuilder();
		// sys_user表数据还原
		List<SysUserEntity> users = sysUserService.queryNewUsers();
		List<SysUserEntity> oldUsers = sysUserService.queryOldUsers();
		Map<Long, SysUserEntity> userIdAndEntity = users.stream().collect(Collectors.toMap(SysUserEntity::getId, Function.identity()));
		for(SysUserEntity user : oldUsers) {
			SysUserEntity sysUserEntity = userIdAndEntity.get(user.getUserId());
			if(ToolUtil.isNotEmpty(sysUserEntity)) {
				sb.append("update sys_user set id='"+user.getUserId()+"',username='"+user.getUsername()+"',pin='"
						+user.getPassword()+"',salt='"+user.getSalt()+"',email='"+user.getEmail()+"',status='"
						+user.getStatus()+"',lang='"+user.getLang()
						+"',source='"+user.getSource()+"',name='"+user.getUsername()+"';");
			}else {
				sb.append("insert into sys_user (id,username,pin,salt,email,status,"
						+ "lang,source,name) values('"+user.getUserId()+"','"+user.getUsername()+"','"+user.getPassword()
						+"','"+user.getSalt()+"','"+user.getEmail()+"','"+user.getStatus()
						+"','"+user.getLang()+"','"+user.getSource()+"','"+user.getUsername()+"');");
			}
		}
		// 
		sqlDao.execute(sb.toString());
		
		// sys_config表数据
		List<SysConfigEntity> newDatas = sysConfigService.list();
		List<SysConfigEntity> oldDatas = sysConfigService.querySysConfigEntitys();
		Map<String, String> oldDataMap = oldDatas.stream().collect(Collectors.toMap(SysConfigEntity::getParamKey, SysConfigEntity::getParamValue));
		for(SysConfigEntity data : newDatas) {
			if(data.getParamKey().equals("default_scrape_interval")) {
				data.setParamValue(oldDataMap.get("scrape_interval"));
			}else if(data.getParamKey().equals("default_scrape_timeout")) {
				data.setParamValue(oldDataMap.get("scrape_timeout"));
			}else if(data.getParamKey().equals("timezone")) {
				data.setParamValue("Asia/Shanghai");
			}else if(data.getParamKey().endsWith("confagent_path") || data.getParamKey().equals("system_version")){
				continue;
			}else {
				String value = oldDataMap.get(data.getParamKey());
				if(value!=null) {
					data.setParamValue(value);
				}
			}
		}
		sysConfigService.updateBatchById(newDatas);
		
		// prom_server snmp_mib link project_topo表数据同步
		StringBuilder restoreData = new StringBuilder();
		restoreData.append("INSERT INTO prom_server (id, dc_id, `host`, `port`, type, `status`, check_time,token ) SELECT id, idc_id,`host`,`port`,type,`status`,check_time,\"\" FROM prom_server_copy;\r\n"
				+ "		INSERT INTO project_topo (id, project_id, topo,update_at,update_by) SELECT id, project_id, topo,update_at,update_by from project_topo_copy;\r\n"
				+ "		INSERT INTO project_topo_icon (id,name,bytes,type,unit) select id,name,bytes,type,-1 from project_topo_icon_copy where id > 4;\r\n"
				+ "		INSERT INTO snmp_mib (id,name,file_name,content,models,remark,update_by,update_at,tree) select id,name,file_name,content,models,remark,update_by,update_at,tree from snmp_mib_copy;\r\n"
				+ "		INSERT INTO link (id,name,create_by,url,build_in,weight) select id,name,create_by,url,build_in,0 from link_copy;"
				+ "     INSERT INTO cabinet (id,name,dc_id,u_size,remark,seq,x,y) select id,name,idc_id,u_size,remark,seq,x,y from cabinet_copy;");
		sqlDao.execute(restoreData.toString());
	}
}