From bf4bf0e15922961be005bbf6693cf306e18d327c Mon Sep 17 00:00:00 2001
From: xiebin <vip_xiaobin810@163.com>
Date: Mon, 09 Feb 2026 09:14:46 +0800
Subject: [PATCH] 数据库迁移初始化提交

---
 src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/MySql.java      |   67 +
 .idea/inspectionProfiles/Project_Default.xml                            |    5 
 src/main/java/cn/net/communion/dbdatasync/Tool.java                     |   15 
 src/main/java/cn/net/communion/dbdatasync/entity/JobInfo.java           |   54 +
 src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java |   84 +
 jobs.xml                                                                |  423 +++++++++
 .idea/.gitignore                                                        |    8 
 pom.xml                                                                 |  120 ++
 README.md                                                               |   59 +
 src/main/java/cn/net/communion/dbdatasync/dbhelper/Factory.java         |   18 
 src/main/java/cn/net/communion/dbdatasync/DataTask.java                 |  117 ++
 src/test/java/cn/net/communion/dbdatasync/AppTest.java                  |   38 
 jobs20260209.xml                                                        |  423 +++++++++
 src/main/java/cn/net/communion/dbdatasync/App.java                      |  115 ++
 jobs-20260205.xml                                                       |  351 +++++++
 jobs1111.xml                                                            |  351 +++++++
 src/main/java/cn/net/communion/dbdatasync/dbhelper/DbHelper.java        |   14 
 LICENSE                                                                 |   21 
 src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/SqlServer.java  |   60 +
 src/main/java/log4j.properties                                          |   20 
 jobs20260226.xml                                                        |  351 +++++++
 src/main/java/cn/net/communion/dbdatasync/entity/DbInfo.java            |   40 
 22 files changed, 2,752 insertions(+), 2 deletions(-)

diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..8d66637
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,5 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+  </profile>
+</component>
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..8a61505
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 GongDexing
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index c984b0b..21fab6c 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,59 @@
-## database-sync-master
+# Database-Sync
+基于java开发的功能强大、配置灵活的数据库之间同步工具,和数据产生器一样,均是前段时间因为项目需要编写的小工具,在实际应用场景中,我们经常需要定期将一个数据库的数据同步到另外一个数据库中,常见的一种做法是将源数据库的数据dump为sql文件,然后到目标数据库执行sql文件完成数据库的导入,但是这种方法至少存在以下问题:
+- 需要手工操作,效率低
+- 当涉及数据表较多时,容易遗漏、出错
+- 如果要定期同步,操作人容易忘记
+- 难以应付频繁变更数据表或者字段
 
-数据库迁移
+针对以上存在的问题,将珍贵人力从这种重复、无意义的工作中解脱出来,特意开发这个小工具,其中主要配置主要在jobs.xml中完成
 
+## 主要功能
+- 目标数据目前只支持MySQL和SQL Sever,源数据库为任何支持sql语法的数据库
+- 根据cron表达式配置数据同步的周期和时间
+- 执行多个数据同步任务
+- 源数据是根据配置的sql语句查询得到,使用者可以非常灵活根据需要进行修改
+- 根据配置的字段,判断同步数据是插入还是更新
+
+## 编译和运行
+
+> mvn package
+
+>cp jobs.xml ./target/jobs.xml
+
+> cd target
+
+> java -jar DataGenerator-0.0.1-SNAPSHOT.jar
+
+## 基本使用
+cat jobs.xml
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+    <code>0001</code>
+    <source> <!-- 源数据库连接方式 -->
+        <url>jdbc:oracle:thin:@192.168.1.179:1521:XE</url>
+        <username>test</username>
+        <password>test</password>
+        <dbtype>oracle</dbtype>
+        <driver>oracle.jdbc.driver.OracleDriver</driver>
+    </source>
+    <dest> <!-- 目标数据库连接方式 -->
+        <url>jdbc:sqlserver://192.168.1.191:1433;DatabaseName=test</url>
+        <username>test</username>
+        <password>test</password>
+        <dbtype>sqlserver</dbtype>
+        <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
+    </dest>
+    <jobs> <!-- 数据库同步任务,可以根据实际需要添加多个job -->
+        <job>
+            <name>1</name> <!-- job的名称,每一个job的名称最好不一样 -->
+            <cron>0/10 * * * * ?</cron> <!-- 定时调度cron表达式 -->
+            <srcSql>select username as username,pwd as password from user</srcSql> <!-- 源数据库的查询语句 -->
+            <destTable>user</destTable> <!-- 目标数据库的数据表 -->
+            <destTableFields>username,password</destTableFields> <!-- 目标数据库数据表的字段,必须和源数据库中查询语句的字段保持一致 -->
+            <destTableKey>username</destTableKey> <!-- 根据此字段判断同步的数据是否在目标数据库总存在 -->
+            <destTableUpdate>password</destTableUpdate> <!-- 如果目标数据库中存在destTableKey标签字段相同的数据,则更新此字段 -->
+        </job>
+    </jobs>
+</root>
+```
diff --git a/jobs-20260205.xml b/jobs-20260205.xml
new file mode 100644
index 0000000..154fa4c
--- /dev/null
+++ b/jobs-20260205.xml
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+    <code>4500000001</code>
+    <source>
+        <url>jdbc:mysql://139.196.74.78:3308/jagzw_test</url>
+        <username>root</username>
+        <password>jxpskj_2018</password>
+        <dbtype>mysql</dbtype>
+        <driver>com.mysql.cj.jdbc.Driver</driver>
+    </source>
+    <dest>
+        <url>jdbc:postgresql://139.196.74.78:5433/jagzw_test?currentSchema=jagzw</url>
+        <username>gaussdb</username>
+        <password>Ztzf@81f4</password>
+        <dbtype>postgresql</dbtype>
+        <driver>org.postgresql.Driver</driver>
+    </dest>
+    <jobs>
+<!--        <job>-->
+<!--            &lt;!&ndash; job的名称,每一个job的名称最好不一样 &ndash;&gt;-->
+<!--            <name>blade_attach_sync</name>-->
+<!--            &lt;!&ndash; 定时调度cron表达式 &ndash;&gt;-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            &lt;!&ndash; 源数据库的查询语句 &ndash;&gt;-->
+<!--            <srcSql>SELECT * from blade_attach</srcSql>-->
+<!--            &lt;!&ndash; 目标数据库的数据表 &ndash;&gt;-->
+<!--            <destTable>blade_attach</destTable>-->
+<!--            &lt;!&ndash; 目标数据库数据表的字段,必须和源数据库中查询语句的字段保持一致 &ndash;&gt;-->
+<!--            <destTableFields>id,tenant_id,link,domain_url,name,nick_name,original_name,extension,attach_size,patrol_task_id,result_type,device_sn,workspace_id,metadata,drone_data,remark,md5,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            &lt;!&ndash; 根据此字段判断同步的数据是否在目标数据库总存在 &ndash;&gt;-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            &lt;!&ndash; 如果目标数据库中存在destTableKey标签字段相同的数据,则更新此字段 &ndash;&gt;-->
+<!--            <destTableUpdate>tenant_id,link,domain_url,name,nick_name,original_name,extension,attach_size,patrol_task_id,result_type,device_sn,workspace_id,metadata,drone_data,remark,md5,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dept_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dept</srcSql>-->
+<!--            <destTable>blade_dept</destTable>-->
+<!--            <destTableFields>id,dept_code,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,dept_nature,bing_id,bind_code,deployment_mode,area_code,status,is_deleted,create_time,update_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>dept_code,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,dept_nature,bing_id,bind_code,deployment_mode,area_code,status,is_deleted,create_time,update_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dict_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dict</srcSql>-->
+<!--            <destTable>blade_dict</destTable>-->
+<!--            <destTableFields>id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dict_biz_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dict_biz</srcSql>-->
+<!--            <destTable>blade_dict_biz</destTable>-->
+<!--            <destTableFields>id,tenant_id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+        <job>
+            <name>blade_job_info_sync</name>
+            <cron>0/10 * * * * ?</cron>
+            <srcSql>SELECT * from blade_job_info</srcSql>
+            <destTable>blade_job_info</destTable>
+            <destTableFields>id,job_server_id,job_id,job_name,job_description,job_params,time_expression_type,time_expression,execute_type,processor_type,processor_info,max_instance_num,concurrency,instance_time_limit,instance_retry_num,task_retry_num,min_cpu_cores,min_memory_space,min_disk_space,designated_workers,max_worker_count,notify_user_ids,enable,dispatch_strategy,lifecycle,alert_threshold,statistic_window_len,silence_window_len,log_type,log_level,extra,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>
+            <destTableKey>id</destTableKey>
+            <destTableUpdate>job_server_id,job_id,job_name,job_description,job_params,time_expression_type,time_expression,execute_type,processor_type,processor_info,max_instance_num,concurrency,instance_time_limit,instance_retry_num,task_retry_num,min_cpu_cores,min_memory_space,min_disk_space,designated_workers,max_worker_count,notify_user_ids,enable,dispatch_strategy,lifecycle,alert_threshold,statistic_window_len,silence_window_len,log_type,log_level,extra,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>
+        </job>
+<!--        <job>-->
+<!--            <name>blade_job_server_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_job_server</srcSql>-->
+<!--            <destTable>blade_job_server</destTable>-->
+<!--            <destTableFields>id,job_server_name,job_server_url,job_app_name,job_app_password,job_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>job_server_name,job_server_url,job_app_name,job_app_password,job_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_log_api_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_log_api</srcSql>-->
+<!--            <destTable>blade_log_api</destTable>-->
+<!--            <destTableFields>id,tenant_id,service_id,server_host,server_ip,env,type,title,method,request_uri,user_agent,remote_ip,method_class,method_name,params,time,create_by,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,service_id,server_host,server_ip,env,type,title,method,request_uri,user_agent,remote_ip,method_class,method_name,params,time,create_by,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_log_error_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_log_error</srcSql>-->
+<!--            <destTable>blade_log_error</destTable>-->
+<!--            <destTableFields>id,tenant_id,service_id,server_host,server_ip,env,method,request_uri,user_agent,stack_trace,exception_name,message,line_number,remote_ip,method_class,file_name,method_name,params,create_by,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,service_id,server_host,server_ip,env,method,request_uri,user_agent,stack_trace,exception_name,message,line_number,remote_ip,method_class,file_name,method_name,params,create_by,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_log_usual_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_log_usual</srcSql>-->
+<!--            <destTable>blade_log_usual</destTable>-->
+<!--            <destTableFields>id,tenant_id,service_id,server_host,server_ip,env,log_level,log_id,log_data,method,request_uri,remote_ip,method_class,method_name,user_agent,params,create_by,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,service_id,server_host,server_ip,env,log_level,log_id,log_data,method,request_uri,remote_ip,method_class,method_name,user_agent,params,create_by,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_menu_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_menu</srcSql>-->
+<!--            <destTable>blade_menu</destTable>-->
+<!--            <destTableFields>id,parent_id,code,name,alias,path,source,sort,category,sys_type,action,is_open,is_device,component,remark,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>parent_id,code,name,alias,path,source,sort,category,sys_type,action,is_open,is_device,component,remark,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_model_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_model</srcSql>-->
+<!--            <destTable>blade_model</destTable>-->
+<!--            <destTableFields>id,datasource_id,model_name,model_code,model_table,model_class,model_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>datasource_id,model_name,model_code,model_table,model_class,model_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_model_prototype_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_model_prototype</srcSql>-->
+<!--            <destTable>blade_model_prototype</destTable>-->
+<!--            <destTableFields>id,model_id,jdbc_name,jdbc_type,jdbc_comment,property_type,property_entity,property_name,is_list,is_form,is_row,component_type,dict_code,is_required,is_query,query_type,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>model_id,jdbc_name,jdbc_type,jdbc_comment,property_type,property_entity,property_name,is_list,is_form,is_row,component_type,dict_code,is_required,is_query,query_type,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_notice_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_notice</srcSql>-->
+<!--            <destTable>blade_notice</destTable>-->
+<!--            <destTableFields>id,tenant_id,title,category,release_time,content,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,title,category,release_time,content,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_oss_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_oss</srcSql>-->
+<!--            <destTable>blade_oss</destTable>-->
+<!--            <destTableFields>id,tenant_id,category,oss_code,endpoint,transform_endpoint,access_key,secret_key,bucket_name,app_id,region,remark,is_def,expire,object_dir_prefix,name,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,category,oss_code,endpoint,transform_endpoint,access_key,secret_key,bucket_name,app_id,region,remark,is_def,expire,object_dir_prefix,name,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_param_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_param</srcSql>-->
+<!--            <destTable>blade_param</destTable>-->
+<!--            <destTableFields>id,param_name,param_key,param_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>param_name,param_key,param_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_post_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_post</srcSql>-->
+<!--            <destTable>blade_post</destTable>-->
+<!--            <destTableFields>id,tenant_id,category,post_code,post_name,sort,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,category,post_code,post_name,sort,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_process_leave_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_process_leave</srcSql>-->
+<!--            <destTable>blade_process_leave</destTable>-->
+<!--            <destTableFields>id,process_definition_id,process_instance_id,start_time,end_time,reason,task_user,apply_time,attach_url,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>process_definition_id,process_instance_id,start_time,end_time,reason,task_user,apply_time,attach_url,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_region_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_region</srcSql>-->
+<!--            <destTable>blade_region</destTable>-->
+<!--            <destTableFields>id,code,parent_code,ancestors,name,province_code,province_name,city_code,city_name,district_code,district_name,town_code,town_name,village_code,village_name,region_level,type,sort,remark,status,create_time,update_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>code,parent_code,ancestors,name,province_code,province_name,city_code,city_name,district_code,district_name,town_code,town_name,village_code,village_name,region_level,type,sort,remark,status,create_time,update_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_report_file_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_report_file</srcSql>-->
+<!--            <destTable>blade_report_file</destTable>-->
+<!--            <destTableFields>id,name,content,create_time,update_time,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>name,content,create_time,update_time,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_role_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_role</srcSql>-->
+<!--            <destTable>blade_role</destTable>-->
+<!--            <destTableFields>id,tenant_id,parent_id,role_name,sort,role_alias,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,parent_id,role_name,sort,role_alias,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_role_menu_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_role_menu</srcSql>-->
+<!--            <destTable>blade_role_menu</destTable>-->
+<!--            <destTableFields>id,menu_id,role_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>menu_id,role_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_role_scope_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_role_scope</srcSql>-->
+<!--            <destTable>blade_role_scope</destTable>-->
+<!--            <destTableFields>id,scope_category,scope_id,role_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>scope_category,scope_id,role_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_scope_api_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_scope_api</srcSql>-->
+<!--            <destTable>blade_scope_api</destTable>-->
+<!--            <destTableFields>id,menu_id,resource_code,scope_name,scope_path,scope_type,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>menu_id,resource_code,scope_name,scope_path,scope_type,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_scope_data_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_scope_data</srcSql>-->
+<!--            <destTable>blade_scope_data</destTable>-->
+<!--            <destTableFields>id,menu_id,resource_code,scope_name,scope_field,scope_class,scope_column,scope_type,scope_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>menu_id,resource_code,scope_name,scope_field,scope_class,scope_column,scope_type,scope_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_sms_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_sms</srcSql>-->
+<!--            <destTable>blade_sms</destTable>-->
+<!--            <destTableFields>id,tenant_id,category,sms_code,template_id,access_key,secret_key,region_id,sign_name,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,category,sms_code,template_id,access_key,secret_key,region_id,sign_name,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_tenant_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_tenant</srcSql>-->
+<!--            <destTable>blade_tenant</destTable>-->
+<!--            <destTableFields>id,tenant_id,tenant_name,domain_url,background_url,linkman,contact_number,address,account_number,expire_time,package_id,datasource_id,license_key,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,tenant_name,domain_url,background_url,linkman,contact_number,address,account_number,expire_time,package_id,datasource_id,license_key,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_tenant_package_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_tenant_package</srcSql>-->
+<!--            <destTable>blade_tenant_package</destTable>-->
+<!--            <destTableFields>id,package_name,menu_id,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>package_name,menu_id,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_top_menu_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_top_menu</srcSql>-->
+<!--            <destTable>blade_top_menu</destTable>-->
+<!--            <destTableFields>id,tenant_id,code,name,source,sort,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,code,name,source,sort,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_top_menu_setting_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_top_menu_setting</srcSql>-->
+<!--            <destTable>blade_top_menu_setting</destTable>-->
+<!--            <destTableFields>id,top_menu_id,menu_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>top_menu_id,menu_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user</srcSql>-->
+<!--            <destTable>blade_user</destTable>-->
+<!--            <destTableFields>id,tenant_id,code,user_type,account,password,name,real_name,avatar,email,phone,birthday,sex,role_id,dept_id,post_id,flight_start_time,flight_end_time,max_login_num,expire_time,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,area_code</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,code,user_type,account,password,name,real_name,avatar,email,phone,birthday,sex,role_id,dept_id,post_id,flight_start_time,flight_end_time,max_login_num,expire_time,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,area_code</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_app_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_app</srcSql>-->
+<!--            <destTable>blade_user_app</destTable>-->
+<!--            <destTableFields>id,user_id,user_ext</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,user_ext</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_dept_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_dept</srcSql>-->
+<!--            <destTable>blade_user_dept</destTable>-->
+<!--            <destTableFields>id,user_id,dept_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,dept_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_oauth_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_oauth</srcSql>-->
+<!--            <destTable>blade_user_oauth</destTable>-->
+<!--            <destTableFields>id,tenant_id,uuid,user_id,username,nickname,avatar,blog,company,location,email,remark,gender,source</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,uuid,user_id,username,nickname,avatar,blog,company,location,email,remark,gender,source</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_other_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_other</srcSql>-->
+<!--            <destTable>blade_user_other</destTable>-->
+<!--            <destTableFields>id,user_id,user_ext</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,user_ext</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_web_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_web</srcSql>-->
+<!--            <destTable>blade_user_web</destTable>-->
+<!--            <destTableFields>id,user_id,user_ext</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,user_ext</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>help_center_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from help_center</srcSql>-->
+<!--            <destTable>help_center</destTable>-->
+<!--            <destTableFields>id,level_one_type,level_two_type,upload_user,create_time,file_path</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>level_one_type,level_two_type,upload_user,create_time,file_path</destTableUpdate>-->
+<!--        </job>-->
+    </jobs>
+</root>
\ No newline at end of file
diff --git a/jobs.xml b/jobs.xml
new file mode 100644
index 0000000..ed61683
--- /dev/null
+++ b/jobs.xml
@@ -0,0 +1,423 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+    <code>4500000001</code>
+    <source>
+        <url>jdbc:mysql://139.196.74.78:3308/jagzw_test</url>
+        <username>root</username>
+        <password>jxpskj_2018</password>
+        <dbtype>mysql</dbtype>
+        <driver>com.mysql.cj.jdbc.Driver</driver>
+    </source>
+    <dest>
+        <url>jdbc:postgresql://139.196.74.78:5433/jagzw_test?currentSchema=jagzw</url>
+        <username>gaussdb</username>
+        <password>Ztzf@81f4</password>
+        <dbtype>postgresql</dbtype>
+        <driver>org.postgresql.Driver</driver>
+    </dest>
+    <jobs>
+<!--        <job>-->
+<!--            &lt;!&ndash; job的名称,每一个job的名称最好不一样 &ndash;&gt;-->
+<!--            <name>blade_attach_sync</name>-->
+<!--            &lt;!&ndash; 定时调度cron表达式 &ndash;&gt;-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            &lt;!&ndash; 源数据库的查询语句 &ndash;&gt;-->
+<!--            <srcSql>SELECT * from blade_attach</srcSql>-->
+<!--            &lt;!&ndash; 目标数据库的数据表 &ndash;&gt;-->
+<!--            <destTable>blade_attach</destTable>-->
+<!--            &lt;!&ndash; 目标数据库数据表的字段,必须和源数据库中查询语句的字段保持一致 &ndash;&gt;-->
+<!--            <destTableFields>id,tenant_id,link,domain_url,name,nick_name,original_name,extension,attach_size,patrol_task_id,result_type,device_sn,workspace_id,metadata,drone_data,remark,md5,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            &lt;!&ndash; 根据此字段判断同步的数据是否在目标数据库总存在 &ndash;&gt;-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            &lt;!&ndash; 如果目标数据库中存在destTableKey标签字段相同的数据,则更新此字段 &ndash;&gt;-->
+<!--            <destTableUpdate>tenant_id,link,domain_url,name,nick_name,original_name,extension,attach_size,patrol_task_id,result_type,device_sn,workspace_id,metadata,drone_data,remark,md5,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dept_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dept</srcSql>-->
+<!--            <destTable>blade_dept</destTable>-->
+<!--            <destTableFields>id,dept_code,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,dept_nature,bing_id,bind_code,deployment_mode,area_code,status,is_deleted,create_time,update_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>dept_code,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,dept_nature,bing_id,bind_code,deployment_mode,area_code,status,is_deleted,create_time,update_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dict_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dict</srcSql>-->
+<!--            <destTable>blade_dict</destTable>-->
+<!--            <destTableFields>id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dict_biz_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dict_biz</srcSql>-->
+<!--            <destTable>blade_dict_biz</destTable>-->
+<!--            <destTableFields>id,tenant_id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+        <job>
+            <name>ja_fw_alarm_favorite_sync</name>
+            <cron>0/10 * * * * ?</cron>
+            <srcSql>SELECT * from ja_fw_alarm_favorite</srcSql>
+            <destTable>ja_fw_alarm_favorite</destTable>
+            <destTableFields>id,alarm_record_id,user_id,title,remark,create_time,create_user,create_dept,update_user,update_time,status,is_deleted</destTableFields>
+            <destTableKey>id</destTableKey>
+            <destTableUpdate>alarm_record_id,user_id,title,remark,create_time,create_user,create_dept,update_user,update_time,status,is_deleted</destTableUpdate>
+        </job>
+<!--        <job>-->
+<!--            <name>ja_fw_area_divide_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_area_divide</srcSql>-->
+<!--            <destTable>ja_fw_area_divide</destTable>-->
+<!--            <destTableFields>id,area_name,trigger_condition,response_mechanism,control_level,police_station_id,device_ids,fly_time_start,fly_time_end,fly_date_start,fly_date_end,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,area_type_keys</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>area_name,trigger_condition,response_mechanism,control_level,police_station_id,device_ids,fly_time_start,fly_time_end,fly_date_start,fly_date_end,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,area_type_keys</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_area_divide_ext_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_area_divide_ext</srcSql>-->
+<!--            <destTable>ja_fw_area_divide_ext</destTable>-->
+<!--            <destTableFields>id,area_divide_id,area_type_key,area_type_value,geom_json,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>area_divide_id,area_type_key,area_type_value,geom_json,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_defense_scene_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_defense_scene</srcSql>-->
+<!--            <destTable>ja_fw_defense_scene</destTable>-->
+<!--            <destTableFields>id,scene_name,scene_type,device_mode,area_divide_ids,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>scene_name,scene_type,device_mode,area_divide_ids,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_defense_scene_manage_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_defense_scene_manage</srcSql>-->
+<!--            <destTable>ja_fw_defense_scene_manage</destTable>-->
+<!--            <destTableFields>id,defense_scene_id,scene_name,longitude,latitude,defense_leader,leader_phone,effective_date_start,effective_date_end,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>defense_scene_id,scene_name,longitude,latitude,defense_leader,leader_phone,effective_date_start,effective_date_end,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_defense_zone_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_defense_zone</srcSql>-->
+<!--            <destTable>ja_fw_defense_zone</destTable>-->
+<!--            <destTableFields>id,zone_name,zone_area,defense_scene_ids,area_divide_ids,device_ids,geom,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>zone_name,zone_area,defense_scene_ids,area_divide_ids,device_ids,geom,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device</srcSql>-->
+<!--            <destTable>ja_fw_device</destTable>-->
+<!--            <destTableFields>id,airport_id,device_sn,device_name,device_type,device_att,device_model,device_specification,manufacturer,source,purpose,belong_dept,charger,contact_phone,remark,battery_pct,azimuth,elevation,detect_target_cnt,effective_range_km,work_mode,latitude,longitude,area_code,track_status,final_outbound_area,final_outbound_area_code,is_enabled,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>airport_id,device_sn,device_name,device_type,device_att,device_model,device_specification,manufacturer,source,purpose,belong_dept,charger,contact_phone,remark,battery_pct,azimuth,elevation,detect_target_cnt,effective_range_km,work_mode,latitude,longitude,area_code,track_status,final_outbound_area,final_outbound_area_code,is_enabled,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_config_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_config</srcSql>-->
+<!--            <destTable>ja_fw_device_config</destTable>-->
+<!--            <destTableFields>id,device_id,config_version,is_latest,config_json,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,config_version,is_latest,config_json,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_maintain_plan_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_maintain_plan</srcSql>-->
+<!--            <destTable>ja_fw_device_maintain_plan</destTable>-->
+<!--            <destTableFields>id,device_id,plan_cycle_type,plan_cycle_value,maintain_status,last_maintain_time,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,plan_cycle_type,plan_cycle_value,maintain_status,last_maintain_time,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_maintain_record_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_maintain_record</srcSql>-->
+<!--            <destTable>ja_fw_device_maintain_record</destTable>-->
+<!--            <destTableFields>id,device_id,plan_id,maintain_time,maintain_content,replace_part,remark,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,plan_id,maintain_time,maintain_content,replace_part,remark,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_per_share_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_per_share</srcSql>-->
+<!--            <destTable>ja_fw_device_per_share</destTable>-->
+<!--            <destTableFields>id,device_sn,device_id,loan_from_dept_id,loan_to_dept_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_sn,device_id,loan_from_dept_id,loan_to_dept_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_scrap_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_scrap</srcSql>-->
+<!--            <destTable>ja_fw_device_scrap</destTable>-->
+<!--            <destTableFields>id,device_id,scrap_time,scrap_reason,dispose_way,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,scrap_time,scrap_reason,dispose_way,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_track_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_track</srcSql>-->
+<!--            <destTable>ja_fw_device_track</destTable>-->
+<!--            <destTableFields>id,device_id,out_time,out_target,out_target_code,purpose,charger,contact_phone,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,out_time,out_target,out_target_code,purpose,charger,contact_phone,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_drone_alarm_record_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_drone_alarm_record</srcSql>-->
+<!--            <destTable>ja_fw_drone_alarm_record</destTable>-->
+<!--            <destTableFields>id,device_id,device_type,drone_name,device_sn,drone_serial_no,drone_type,alarm_type,alarm_time,trigger_reason,flight_status,longitude,latitude,area_name,signal_freq_mhz,flight_height_m,flight_speed_ms,stay_duration,counter_way,area_divide_id,defense_scene_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,device_type,drone_name,device_sn,drone_serial_no,drone_type,alarm_type,alarm_time,trigger_reason,flight_status,longitude,latitude,area_name,signal_freq_mhz,flight_height_m,flight_speed_ms,stay_duration,counter_way,area_divide_id,defense_scene_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_drone_flight_record_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_drone_flight_record</srcSql>-->
+<!--            <destTable>ja_fw_drone_flight_record</destTable>-->
+<!--            <destTableFields>id,device_id,area_divide_id,device_type,drone_name,area_name,serial_no,alarm_time,trigger_type,stay_duration,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,area_divide_id,device_type,drone_name,area_name,serial_no,alarm_time,trigger_type,stay_duration,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_drone_flight_record_detail_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_drone_flight_record_detail</srcSql>-->
+<!--            <destTable>ja_fw_drone_flight_record_detail</destTable>-->
+<!--            <destTableFields>id,flight_record_id,longitude,latitude,point_time,is_alarm,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>flight_record_id,longitude,latitude,point_time,is_alarm,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_effect_eval_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_effect_eval</srcSql>-->
+<!--            <destTable>ja_fw_effect_eval</destTable>-->
+<!--            <destTableFields>id,alarm_record_id,counter_way,device_id,device_sn,device_name,device_model,device_type,drone_name,drone_type,drone_device_code,find_time,counter_effect,deploy_longitude,deploy_latitude,cover_radius_m,work_mode,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>alarm_record_id,counter_way,device_id,device_sn,device_name,device_model,device_type,drone_name,drone_type,drone_device_code,find_time,counter_effect,deploy_longitude,deploy_latitude,cover_radius_m,work_mode,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_police_station_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_police_station</srcSql>-->
+<!--            <destTable>ja_fw_police_station</destTable>-->
+<!--            <destTableFields>id,station_name,address,longitude,latitude,contact_person,contact_phone,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>station_name,address,longitude,latitude,contact_person,contact_phone,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_task_schedule_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_task_schedule</srcSql>-->
+<!--            <destTable>ja_fw_task_schedule</destTable>-->
+<!--            <destTableFields>id,device_id,area_divide_id,defense_scene_id,longitude,latitude,dispatch_user,dispatch_start_time,dispatch_end_time,dispatch_content,dispatch_result,dispose_measure,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,area_divide_id,defense_scene_id,longitude,latitude,dispatch_user,dispatch_start_time,dispatch_end_time,dispatch_content,dispatch_result,dispose_measure,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_application_innovation_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_application_innovation</srcSql>-->
+<!--            <destTable>ja_gd_application_innovation</destTable>-->
+<!--            <destTableFields>id,case_name,belong_domain,innovation_status,application_scenario_desc,matter_name,resource_name,resource_code,case_desc,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>case_name,belong_domain,innovation_status,application_scenario_desc,matter_name,resource_name,resource_code,case_desc,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_clue_event_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_clue_event</srcSql>-->
+<!--            <destTable>ja_gd_clue_event</destTable>-->
+<!--            <destTableFields>id,result_id,work_order_id,event_num,dispose_user,dispose_dept,longitude,latitude,event_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>result_id,work_order_id,event_num,dispose_user,dispose_dept,longitude,latitude,event_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_data_evaluation_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_data_evaluation</srcSql>-->
+<!--            <destTable>ja_gd_data_evaluation</destTable>-->
+<!--            <destTableFields>id,title,data_name,propose_dept_id,data_provide_dept_id,score,is_resolved,evaluation_content,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>title,data_name,propose_dept_id,data_provide_dept_id,score,is_resolved,evaluation_content,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_data_objection_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_data_objection</srcSql>-->
+<!--            <destTable>ja_gd_data_objection</destTable>-->
+<!--            <destTableFields>id,title,objection_type,objection_status,catalog_resource_name,submitter,submitter_contact,handle_unit,objection_desc,objection_basis,other_objection_detail,review_opinion,apply_target_dept_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>title,objection_type,objection_status,catalog_resource_name,submitter,submitter_contact,handle_unit,objection_desc,objection_basis,other_objection_detail,review_opinion,apply_target_dept_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_data_objection_attachment_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_data_objection_attachment</srcSql>-->
+<!--            <destTable>ja_gd_data_objection_attachment</destTable>-->
+<!--            <destTableFields>id,objection_id,attach_id,attach_name,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>objection_id,attach_id,attach_name,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_flyer_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_flyer</srcSql>-->
+<!--            <destTable>ja_gd_flyer</destTable>-->
+<!--            <destTableFields>id,flyer_id,flyer_name,flyer_phone,region_code,flight_hours,project_experience,technical_strength,skilled_uav_type,skilled_task_type,flyer_address,certification,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>flyer_id,flyer_name,flyer_phone,region_code,flight_hours,project_experience,technical_strength,skilled_uav_type,skilled_task_type,flyer_address,certification,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_implement_list_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_implement_list</srcSql>-->
+<!--            <destTable>ja_gd_implement_list</destTable>-->
+<!--            <destTableFields>id,matter_name,matter_code,area_code,area_name,org_code,org_name,catalog_code,implement_code,implement_name,process_definition_id,process_instance_id,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>matter_name,matter_code,area_code,area_name,org_code,org_name,catalog_code,implement_code,implement_name,process_definition_id,process_instance_id,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_manage_device_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_manage_device</srcSql>-->
+<!--            <destTable>ja_gd_manage_device</destTable>-->
+<!--            <destTableFields>id,airport_id,device_sn,child_sn,device_name,longitude,latitude,nickname,device_type,device_payload,geom,firmware_version,mode_code,insure_expired_time,traffic_remaining,traffic_expire_time,location,height,is_with_dock,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>airport_id,device_sn,child_sn,device_name,longitude,latitude,nickname,device_type,device_payload,geom,firmware_version,mode_code,insure_expired_time,traffic_remaining,traffic_expire_time,location,height,is_with_dock,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_material_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_material</srcSql>-->
+<!--            <destTable>ja_gd_material</destTable>-->
+<!--            <destTableFields>id,material_name,necessity,is_all_scenario,material_desc,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>material_name,necessity,is_all_scenario,material_desc,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_operational_revenue_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_operational_revenue</srcSql>-->
+<!--            <destTable>ja_gd_operational_revenue</destTable>-->
+<!--            <destTableFields>id,operating_income,total_cost,net_profit,financial_irr,market_space,create_time,create_user,create_dept,update_time,update_user,nick_name,is_deleted,earn_forecast</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>operating_income,total_cost,net_profit,financial_irr,market_space,create_time,create_user,create_dept,update_time,update_user,nick_name,is_deleted,earn_forecast</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_patrol_task_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_patrol_task</srcSql>-->
+<!--            <destTable>ja_gd_patrol_task</destTable>-->
+<!--            <destTableFields>id,work_order_id,task_no,patrol_task_name,patrol_task_type,execute_time,airline_id,patrol_route_url,recommend_flyer_name,device_id,task_desc,reject_reason,task_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>work_order_id,task_no,patrol_task_name,patrol_task_type,execute_time,airline_id,patrol_route_url,recommend_flyer_name,device_id,task_desc,reject_reason,task_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_supply_demand_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_supply_demand</srcSql>-->
+<!--            <destTable>ja_gd_supply_demand</destTable>-->
+<!--            <destTableFields>id,demand_name,demand_type,contact_person,contact_phone,contact_email,demand_status,update_cycle,apply_basis,share_type,application_scene,responsible_dept_id,apply_target_dept_id,data_source,demand_info,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>demand_name,demand_type,contact_person,contact_phone,contact_email,demand_status,update_cycle,apply_basis,share_type,application_scene,responsible_dept_id,apply_target_dept_id,data_source,demand_info,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_supply_demand_audit_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_supply_demand_audit</srcSql>-->
+<!--            <destTable>ja_gd_supply_demand_audit</destTable>-->
+<!--            <destTableFields>id,demand_id,audit_status,audit_opinion,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>demand_id,audit_status,audit_opinion,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_supply_demand_audit_attachment_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_supply_demand_audit_attachment</srcSql>-->
+<!--            <destTable>ja_gd_supply_demand_audit_attachment</destTable>-->
+<!--            <destTableFields>id,demand_id,attach_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>demand_id,attach_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_task_result_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_task_result</srcSql>-->
+<!--            <destTable>ja_gd_task_result</destTable>-->
+<!--            <destTableFields>id,patrol_task_id,result_code,result_url,shoot_time,photo_data,longitude,latitude,distribute_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>patrol_task_id,result_code,result_url,shoot_time,photo_data,longitude,latitude,distribute_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_thing_list_material_rel_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_thing_list_material_rel</srcSql>-->
+<!--            <destTable>ja_gd_thing_list_material_rel</destTable>-->
+<!--            <destTableFields>id,implement_list_id,material_id,sort,scenario_config,status,create_user,create_dept,create_time,update_user,update_time,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>implement_list_id,material_id,sort,scenario_config,status,create_user,create_dept,create_time,update_user,update_time,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_work_order_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_work_order</srcSql>-->
+<!--            <destTable>ja_gd_work_order</destTable>-->
+<!--            <destTableFields>id,work_order_name,work_order_code,work_order_type,device_load_demand,recommend_device_ids,work_order_status,execute_start_time,execute_end_time,service_party,geom,remark,reject_reason,full_snapshot,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>work_order_name,work_order_code,work_order_type,device_load_demand,recommend_device_ids,work_order_status,execute_start_time,execute_end_time,service_party,geom,remark,reject_reason,full_snapshot,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_work_order_flow_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_work_order_flow</srcSql>-->
+<!--            <destTable>ja_gd_work_order_flow</destTable>-->
+<!--            <destTableFields>id,flow_name,flow_status,flow_desc,work_order_id,work_status,operator,type,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>flow_name,flow_status,flow_desc,work_order_id,work_status,operator,type,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_log_operation_log_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_log_operation_log</srcSql>-->
+<!--            <destTable>ja_log_operation_log</destTable>-->
+<!--            <destTableFields>id,tenant_id,service_id,server_host,server_ip,env,type,title,method,request_uri,user_agent,remote_ip,method_class,method_name,params,create_by,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,service_id,server_host,server_ip,env,type,title,method,request_uri,user_agent,remote_ip,method_class,method_name,params,create_by,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>manage_device_per_share_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from manage_device_per_share</srcSql>-->
+<!--            <destTable>manage_device_per_share</destTable>-->
+<!--            <destTableFields>id,device_sn,loan_from_dept_id,loan_to_dept_id,device_per_menu_id,create_user,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_sn,loan_from_dept_id,loan_to_dept_id,device_per_menu_id,create_user,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>sys_config_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from sys_config</srcSql>-->
+<!--            <destTable>sys_config</destTable>-->
+<!--            <destTableFields>id,name,dept_id,create_time,update_time,remark,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>name,dept_id,create_time,update_time,remark,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+    </jobs>
+</root>
\ No newline at end of file
diff --git a/jobs1111.xml b/jobs1111.xml
new file mode 100644
index 0000000..39ad9b6
--- /dev/null
+++ b/jobs1111.xml
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+    <code>4500000001</code>
+    <source>
+        <url>jdbc:mysql://139.196.74.78:3308/jagzw_test</url>
+        <username>root</username>
+        <password>jxpskj_2018</password>
+        <dbtype>mysql</dbtype>
+        <driver>com.mysql.cj.jdbc.Driver</driver>
+    </source>
+    <dest>
+        <url>jdbc:postgresql://139.196.74.78:5433/jagzw_test?currentSchema=jagzw</url>
+        <username>gaussdb</username>
+        <password>Ztzf@81f4</password>
+        <dbtype>postgresql</dbtype>
+        <driver>org.postgresql.Driver</driver>
+    </dest>
+    <jobs>
+<!--        <job>-->
+<!--            &lt;!&ndash; job的名称,每一个job的名称最好不一样 &ndash;&gt;-->
+<!--            <name>blade_attach_sync</name>-->
+<!--            &lt;!&ndash; 定时调度cron表达式 &ndash;&gt;-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            &lt;!&ndash; 源数据库的查询语句 &ndash;&gt;-->
+<!--            <srcSql>SELECT * from blade_attach</srcSql>-->
+<!--            &lt;!&ndash; 目标数据库的数据表 &ndash;&gt;-->
+<!--            <destTable>blade_attach</destTable>-->
+<!--            &lt;!&ndash; 目标数据库数据表的字段,必须和源数据库中查询语句的字段保持一致 &ndash;&gt;-->
+<!--            <destTableFields>id,tenant_id,link,domain_url,name,nick_name,original_name,extension,attach_size,patrol_task_id,result_type,device_sn,workspace_id,metadata,drone_data,remark,md5,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            &lt;!&ndash; 根据此字段判断同步的数据是否在目标数据库总存在 &ndash;&gt;-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            &lt;!&ndash; 如果目标数据库中存在destTableKey标签字段相同的数据,则更新此字段 &ndash;&gt;-->
+<!--            <destTableUpdate>tenant_id,link,domain_url,name,nick_name,original_name,extension,attach_size,patrol_task_id,result_type,device_sn,workspace_id,metadata,drone_data,remark,md5,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dept_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dept</srcSql>-->
+<!--            <destTable>blade_dept</destTable>-->
+<!--            <destTableFields>id,dept_code,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,dept_nature,bing_id,bind_code,deployment_mode,area_code,status,is_deleted,create_time,update_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>dept_code,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,dept_nature,bing_id,bind_code,deployment_mode,area_code,status,is_deleted,create_time,update_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dict_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dict</srcSql>-->
+<!--            <destTable>blade_dict</destTable>-->
+<!--            <destTableFields>id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dict_biz_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dict_biz</srcSql>-->
+<!--            <destTable>blade_dict_biz</destTable>-->
+<!--            <destTableFields>id,tenant_id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_job_info_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_job_info</srcSql>-->
+<!--            <destTable>blade_job_info</destTable>-->
+<!--            <destTableFields>id,job_server_id,job_id,job_name,job_description,job_params,time_expression_type,time_expression,execute_type,processor_type,processor_info,max_instance_num,concurrency,instance_time_limit,instance_retry_num,task_retry_num,min_cpu_cores,min_memory_space,min_disk_space,designated_workers,max_worker_count,notify_user_ids,enable,dispatch_strategy,lifecycle,alert_threshold,statistic_window_len,silence_window_len,log_type,log_level,extra,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>job_server_id,job_id,job_name,job_description,job_params,time_expression_type,time_expression,execute_type,processor_type,processor_info,max_instance_num,concurrency,instance_time_limit,instance_retry_num,task_retry_num,min_cpu_cores,min_memory_space,min_disk_space,designated_workers,max_worker_count,notify_user_ids,enable,dispatch_strategy,lifecycle,alert_threshold,statistic_window_len,silence_window_len,log_type,log_level,extra,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_job_server_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_job_server</srcSql>-->
+<!--            <destTable>blade_job_server</destTable>-->
+<!--            <destTableFields>id,job_server_name,job_server_url,job_app_name,job_app_password,job_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>job_server_name,job_server_url,job_app_name,job_app_password,job_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_log_api_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_log_api</srcSql>-->
+<!--            <destTable>blade_log_api</destTable>-->
+<!--            <destTableFields>id,tenant_id,service_id,server_host,server_ip,env,type,title,method,request_uri,user_agent,remote_ip,method_class,method_name,params,time,create_by,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,service_id,server_host,server_ip,env,type,title,method,request_uri,user_agent,remote_ip,method_class,method_name,params,time,create_by,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_log_error_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_log_error</srcSql>-->
+<!--            <destTable>blade_log_error</destTable>-->
+<!--            <destTableFields>id,tenant_id,service_id,server_host,server_ip,env,method,request_uri,user_agent,stack_trace,exception_name,message,line_number,remote_ip,method_class,file_name,method_name,params,create_by,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,service_id,server_host,server_ip,env,method,request_uri,user_agent,stack_trace,exception_name,message,line_number,remote_ip,method_class,file_name,method_name,params,create_by,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_log_usual_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_log_usual</srcSql>-->
+<!--            <destTable>blade_log_usual</destTable>-->
+<!--            <destTableFields>id,tenant_id,service_id,server_host,server_ip,env,log_level,log_id,log_data,method,request_uri,remote_ip,method_class,method_name,user_agent,params,create_by,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,service_id,server_host,server_ip,env,log_level,log_id,log_data,method,request_uri,remote_ip,method_class,method_name,user_agent,params,create_by,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_menu_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_menu</srcSql>-->
+<!--            <destTable>blade_menu</destTable>-->
+<!--            <destTableFields>id,parent_id,code,name,alias,path,source,sort,category,sys_type,action,is_open,is_device,component,remark,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>parent_id,code,name,alias,path,source,sort,category,sys_type,action,is_open,is_device,component,remark,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_model_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_model</srcSql>-->
+<!--            <destTable>blade_model</destTable>-->
+<!--            <destTableFields>id,datasource_id,model_name,model_code,model_table,model_class,model_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>datasource_id,model_name,model_code,model_table,model_class,model_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_model_prototype_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_model_prototype</srcSql>-->
+<!--            <destTable>blade_model_prototype</destTable>-->
+<!--            <destTableFields>id,model_id,jdbc_name,jdbc_type,jdbc_comment,property_type,property_entity,property_name,is_list,is_form,is_row,component_type,dict_code,is_required,is_query,query_type,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>model_id,jdbc_name,jdbc_type,jdbc_comment,property_type,property_entity,property_name,is_list,is_form,is_row,component_type,dict_code,is_required,is_query,query_type,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_notice_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_notice</srcSql>-->
+<!--            <destTable>blade_notice</destTable>-->
+<!--            <destTableFields>id,tenant_id,title,category,release_time,content,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,title,category,release_time,content,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_oss_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_oss</srcSql>-->
+<!--            <destTable>blade_oss</destTable>-->
+<!--            <destTableFields>id,tenant_id,category,oss_code,endpoint,transform_endpoint,access_key,secret_key,bucket_name,app_id,region,remark,is_def,expire,object_dir_prefix,name,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,category,oss_code,endpoint,transform_endpoint,access_key,secret_key,bucket_name,app_id,region,remark,is_def,expire,object_dir_prefix,name,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_param_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_param</srcSql>-->
+<!--            <destTable>blade_param</destTable>-->
+<!--            <destTableFields>id,param_name,param_key,param_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>param_name,param_key,param_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_post_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_post</srcSql>-->
+<!--            <destTable>blade_post</destTable>-->
+<!--            <destTableFields>id,tenant_id,category,post_code,post_name,sort,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,category,post_code,post_name,sort,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_process_leave_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_process_leave</srcSql>-->
+<!--            <destTable>blade_process_leave</destTable>-->
+<!--            <destTableFields>id,process_definition_id,process_instance_id,start_time,end_time,reason,task_user,apply_time,attach_url,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>process_definition_id,process_instance_id,start_time,end_time,reason,task_user,apply_time,attach_url,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+        <job>
+            <name>blade_region_sync</name>
+<!--            <cron>0 * * 5 * 2026</cron>-->
+            <srcSql>SELECT * from blade_region limit 0,1</srcSql>
+            <destTable>blade_region</destTable>
+            <destTableFields>id,code,parent_code,ancestors,name,province_code,province_name,city_code,city_name,district_code,district_name,town_code,town_name,village_code,village_name,region_level,type,sort,remark,status,create_time,update_time</destTableFields>
+            <destTableKey>id</destTableKey>
+            <destTableUpdate>code,parent_code,ancestors,name,province_code,province_name,city_code,city_name,district_code,district_name,town_code,town_name,village_code,village_name,region_level,type,sort,remark,status,create_time,update_time</destTableUpdate>
+        </job>
+<!--        <job>-->
+<!--            <name>blade_report_file_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_report_file</srcSql>-->
+<!--            <destTable>blade_report_file</destTable>-->
+<!--            <destTableFields>id,name,content,create_time,update_time,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>name,content,create_time,update_time,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_role_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_role</srcSql>-->
+<!--            <destTable>blade_role</destTable>-->
+<!--            <destTableFields>id,tenant_id,parent_id,role_name,sort,role_alias,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,parent_id,role_name,sort,role_alias,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_role_menu_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_role_menu</srcSql>-->
+<!--            <destTable>blade_role_menu</destTable>-->
+<!--            <destTableFields>id,menu_id,role_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>menu_id,role_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_role_scope_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_role_scope</srcSql>-->
+<!--            <destTable>blade_role_scope</destTable>-->
+<!--            <destTableFields>id,scope_category,scope_id,role_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>scope_category,scope_id,role_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_scope_api_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_scope_api</srcSql>-->
+<!--            <destTable>blade_scope_api</destTable>-->
+<!--            <destTableFields>id,menu_id,resource_code,scope_name,scope_path,scope_type,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>menu_id,resource_code,scope_name,scope_path,scope_type,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_scope_data_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_scope_data</srcSql>-->
+<!--            <destTable>blade_scope_data</destTable>-->
+<!--            <destTableFields>id,menu_id,resource_code,scope_name,scope_field,scope_class,scope_column,scope_type,scope_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>menu_id,resource_code,scope_name,scope_field,scope_class,scope_column,scope_type,scope_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_sms_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_sms</srcSql>-->
+<!--            <destTable>blade_sms</destTable>-->
+<!--            <destTableFields>id,tenant_id,category,sms_code,template_id,access_key,secret_key,region_id,sign_name,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,category,sms_code,template_id,access_key,secret_key,region_id,sign_name,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_tenant_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_tenant</srcSql>-->
+<!--            <destTable>blade_tenant</destTable>-->
+<!--            <destTableFields>id,tenant_id,tenant_name,domain_url,background_url,linkman,contact_number,address,account_number,expire_time,package_id,datasource_id,license_key,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,tenant_name,domain_url,background_url,linkman,contact_number,address,account_number,expire_time,package_id,datasource_id,license_key,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_tenant_package_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_tenant_package</srcSql>-->
+<!--            <destTable>blade_tenant_package</destTable>-->
+<!--            <destTableFields>id,package_name,menu_id,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>package_name,menu_id,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_top_menu_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_top_menu</srcSql>-->
+<!--            <destTable>blade_top_menu</destTable>-->
+<!--            <destTableFields>id,tenant_id,code,name,source,sort,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,code,name,source,sort,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_top_menu_setting_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_top_menu_setting</srcSql>-->
+<!--            <destTable>blade_top_menu_setting</destTable>-->
+<!--            <destTableFields>id,top_menu_id,menu_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>top_menu_id,menu_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user</srcSql>-->
+<!--            <destTable>blade_user</destTable>-->
+<!--            <destTableFields>id,tenant_id,code,user_type,account,password,name,real_name,avatar,email,phone,birthday,sex,role_id,dept_id,post_id,flight_start_time,flight_end_time,max_login_num,expire_time,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,area_code</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,code,user_type,account,password,name,real_name,avatar,email,phone,birthday,sex,role_id,dept_id,post_id,flight_start_time,flight_end_time,max_login_num,expire_time,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,area_code</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_app_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_app</srcSql>-->
+<!--            <destTable>blade_user_app</destTable>-->
+<!--            <destTableFields>id,user_id,user_ext</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,user_ext</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_dept_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_dept</srcSql>-->
+<!--            <destTable>blade_user_dept</destTable>-->
+<!--            <destTableFields>id,user_id,dept_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,dept_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_oauth_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_oauth</srcSql>-->
+<!--            <destTable>blade_user_oauth</destTable>-->
+<!--            <destTableFields>id,tenant_id,uuid,user_id,username,nickname,avatar,blog,company,location,email,remark,gender,source</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,uuid,user_id,username,nickname,avatar,blog,company,location,email,remark,gender,source</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_other_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_other</srcSql>-->
+<!--            <destTable>blade_user_other</destTable>-->
+<!--            <destTableFields>id,user_id,user_ext</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,user_ext</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_web_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_web</srcSql>-->
+<!--            <destTable>blade_user_web</destTable>-->
+<!--            <destTableFields>id,user_id,user_ext</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,user_ext</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>help_center_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from help_center</srcSql>-->
+<!--            <destTable>help_center</destTable>-->
+<!--            <destTableFields>id,level_one_type,level_two_type,upload_user,create_time,file_path</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>level_one_type,level_two_type,upload_user,create_time,file_path</destTableUpdate>-->
+<!--        </job>-->
+    </jobs>
+</root>
\ No newline at end of file
diff --git a/jobs20260209.xml b/jobs20260209.xml
new file mode 100644
index 0000000..033886c
--- /dev/null
+++ b/jobs20260209.xml
@@ -0,0 +1,423 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+    <code>4500000001</code>
+    <source>
+        <url>jdbc:mysql://139.196.74.78:3308/jagzw_test</url>
+        <username>root</username>
+        <password>jxpskj_2018</password>
+        <dbtype>mysql</dbtype>
+        <driver>com.mysql.cj.jdbc.Driver</driver>
+    </source>
+    <dest>
+        <url>jdbc:postgresql://139.196.74.78:5433/jagzw_test?currentSchema=jagzw</url>
+        <username>gaussdb</username>
+        <password>Ztzf@81f4</password>
+        <dbtype>postgresql</dbtype>
+        <driver>org.postgresql.Driver</driver>
+    </dest>
+    <jobs>
+<!--        <job>-->
+<!--            &lt;!&ndash; job的名称,每一个job的名称最好不一样 &ndash;&gt;-->
+<!--            <name>blade_attach_sync</name>-->
+<!--            &lt;!&ndash; 定时调度cron表达式 &ndash;&gt;-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            &lt;!&ndash; 源数据库的查询语句 &ndash;&gt;-->
+<!--            <srcSql>SELECT * from blade_attach</srcSql>-->
+<!--            &lt;!&ndash; 目标数据库的数据表 &ndash;&gt;-->
+<!--            <destTable>blade_attach</destTable>-->
+<!--            &lt;!&ndash; 目标数据库数据表的字段,必须和源数据库中查询语句的字段保持一致 &ndash;&gt;-->
+<!--            <destTableFields>id,tenant_id,link,domain_url,name,nick_name,original_name,extension,attach_size,patrol_task_id,result_type,device_sn,workspace_id,metadata,drone_data,remark,md5,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            &lt;!&ndash; 根据此字段判断同步的数据是否在目标数据库总存在 &ndash;&gt;-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            &lt;!&ndash; 如果目标数据库中存在destTableKey标签字段相同的数据,则更新此字段 &ndash;&gt;-->
+<!--            <destTableUpdate>tenant_id,link,domain_url,name,nick_name,original_name,extension,attach_size,patrol_task_id,result_type,device_sn,workspace_id,metadata,drone_data,remark,md5,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dept_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dept</srcSql>-->
+<!--            <destTable>blade_dept</destTable>-->
+<!--            <destTableFields>id,dept_code,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,dept_nature,bing_id,bind_code,deployment_mode,area_code,status,is_deleted,create_time,update_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>dept_code,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,dept_nature,bing_id,bind_code,deployment_mode,area_code,status,is_deleted,create_time,update_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dict_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dict</srcSql>-->
+<!--            <destTable>blade_dict</destTable>-->
+<!--            <destTableFields>id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dict_biz_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dict_biz</srcSql>-->
+<!--            <destTable>blade_dict_biz</destTable>-->
+<!--            <destTableFields>id,tenant_id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_alarm_favorite_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_alarm_favorite</srcSql>-->
+<!--            <destTable>ja_fw_alarm_favorite</destTable>-->
+<!--            <destTableFields>id,alarm_record_id,user_id,title,remark,create_time,create_user,create_dept,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>alarm_record_id,user_id,title,remark,create_time,create_user,create_dept,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_area_divide_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_area_divide</srcSql>-->
+<!--            <destTable>ja_fw_area_divide</destTable>-->
+<!--            <destTableFields>id,area_name,trigger_condition,response_mechanism,control_level,police_station_id,device_ids,fly_time_start,fly_time_end,fly_date_start,fly_date_end,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,area_type_keys</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>area_name,trigger_condition,response_mechanism,control_level,police_station_id,device_ids,fly_time_start,fly_time_end,fly_date_start,fly_date_end,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,area_type_keys</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_area_divide_ext_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_area_divide_ext</srcSql>-->
+<!--            <destTable>ja_fw_area_divide_ext</destTable>-->
+<!--            <destTableFields>id,area_divide_id,area_type_key,area_type_value,geom_json,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>area_divide_id,area_type_key,area_type_value,geom_json,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_defense_scene_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_defense_scene</srcSql>-->
+<!--            <destTable>ja_fw_defense_scene</destTable>-->
+<!--            <destTableFields>id,scene_name,scene_type,device_mode,area_divide_ids,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>scene_name,scene_type,device_mode,area_divide_ids,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_defense_scene_manage_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_defense_scene_manage</srcSql>-->
+<!--            <destTable>ja_fw_defense_scene_manage</destTable>-->
+<!--            <destTableFields>id,defense_scene_id,scene_name,longitude,latitude,defense_leader,leader_phone,effective_date_start,effective_date_end,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>defense_scene_id,scene_name,longitude,latitude,defense_leader,leader_phone,effective_date_start,effective_date_end,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_defense_zone_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_defense_zone</srcSql>-->
+<!--            <destTable>ja_fw_defense_zone</destTable>-->
+<!--            <destTableFields>id,zone_name,zone_area,defense_scene_ids,area_divide_ids,device_ids,geom,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>zone_name,zone_area,defense_scene_ids,area_divide_ids,device_ids,geom,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device</srcSql>-->
+<!--            <destTable>ja_fw_device</destTable>-->
+<!--            <destTableFields>id,airport_id,device_sn,device_name,device_type,device_att,device_model,device_specification,manufacturer,source,purpose,belong_dept,charger,contact_phone,remark,battery_pct,azimuth,elevation,detect_target_cnt,effective_range_km,work_mode,latitude,longitude,area_code,track_status,final_outbound_area,final_outbound_area_code,is_enabled,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>airport_id,device_sn,device_name,device_type,device_att,device_model,device_specification,manufacturer,source,purpose,belong_dept,charger,contact_phone,remark,battery_pct,azimuth,elevation,detect_target_cnt,effective_range_km,work_mode,latitude,longitude,area_code,track_status,final_outbound_area,final_outbound_area_code,is_enabled,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_config_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_config</srcSql>-->
+<!--            <destTable>ja_fw_device_config</destTable>-->
+<!--            <destTableFields>id,device_id,config_version,is_latest,config_json,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,config_version,is_latest,config_json,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_maintain_plan_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_maintain_plan</srcSql>-->
+<!--            <destTable>ja_fw_device_maintain_plan</destTable>-->
+<!--            <destTableFields>id,device_id,plan_cycle_type,plan_cycle_value,maintain_status,last_maintain_time,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,plan_cycle_type,plan_cycle_value,maintain_status,last_maintain_time,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_maintain_record_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_maintain_record</srcSql>-->
+<!--            <destTable>ja_fw_device_maintain_record</destTable>-->
+<!--            <destTableFields>id,device_id,plan_id,maintain_time,maintain_content,replace_part,remark,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,plan_id,maintain_time,maintain_content,replace_part,remark,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_per_share_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_per_share</srcSql>-->
+<!--            <destTable>ja_fw_device_per_share</destTable>-->
+<!--            <destTableFields>id,device_sn,device_id,loan_from_dept_id,loan_to_dept_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_sn,device_id,loan_from_dept_id,loan_to_dept_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_scrap_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_scrap</srcSql>-->
+<!--            <destTable>ja_fw_device_scrap</destTable>-->
+<!--            <destTableFields>id,device_id,scrap_time,scrap_reason,dispose_way,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,scrap_time,scrap_reason,dispose_way,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_device_track_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_device_track</srcSql>-->
+<!--            <destTable>ja_fw_device_track</destTable>-->
+<!--            <destTableFields>id,device_id,out_time,out_target,out_target_code,purpose,charger,contact_phone,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,out_time,out_target,out_target_code,purpose,charger,contact_phone,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_drone_alarm_record_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_drone_alarm_record</srcSql>-->
+<!--            <destTable>ja_fw_drone_alarm_record</destTable>-->
+<!--            <destTableFields>id,device_id,device_type,drone_name,device_sn,drone_serial_no,drone_type,alarm_type,alarm_time,trigger_reason,flight_status,longitude,latitude,area_name,signal_freq_mhz,flight_height_m,flight_speed_ms,stay_duration,counter_way,area_divide_id,defense_scene_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,device_type,drone_name,device_sn,drone_serial_no,drone_type,alarm_type,alarm_time,trigger_reason,flight_status,longitude,latitude,area_name,signal_freq_mhz,flight_height_m,flight_speed_ms,stay_duration,counter_way,area_divide_id,defense_scene_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_drone_flight_record_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_drone_flight_record</srcSql>-->
+<!--            <destTable>ja_fw_drone_flight_record</destTable>-->
+<!--            <destTableFields>id,device_id,area_divide_id,device_type,drone_name,area_name,serial_no,alarm_time,trigger_type,stay_duration,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,area_divide_id,device_type,drone_name,area_name,serial_no,alarm_time,trigger_type,stay_duration,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_drone_flight_record_detail_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_drone_flight_record_detail</srcSql>-->
+<!--            <destTable>ja_fw_drone_flight_record_detail</destTable>-->
+<!--            <destTableFields>id,flight_record_id,longitude,latitude,point_time,is_alarm,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>flight_record_id,longitude,latitude,point_time,is_alarm,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_effect_eval_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_effect_eval</srcSql>-->
+<!--            <destTable>ja_fw_effect_eval</destTable>-->
+<!--            <destTableFields>id,alarm_record_id,counter_way,device_id,device_sn,device_name,device_model,device_type,drone_name,drone_type,drone_device_code,find_time,counter_effect,deploy_longitude,deploy_latitude,cover_radius_m,work_mode,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>alarm_record_id,counter_way,device_id,device_sn,device_name,device_model,device_type,drone_name,drone_type,drone_device_code,find_time,counter_effect,deploy_longitude,deploy_latitude,cover_radius_m,work_mode,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_police_station_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_police_station</srcSql>-->
+<!--            <destTable>ja_fw_police_station</destTable>-->
+<!--            <destTableFields>id,station_name,address,longitude,latitude,contact_person,contact_phone,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>station_name,address,longitude,latitude,contact_person,contact_phone,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_fw_task_schedule_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_fw_task_schedule</srcSql>-->
+<!--            <destTable>ja_fw_task_schedule</destTable>-->
+<!--            <destTableFields>id,device_id,area_divide_id,defense_scene_id,longitude,latitude,dispatch_user,dispatch_start_time,dispatch_end_time,dispatch_content,dispatch_result,dispose_measure,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_id,area_divide_id,defense_scene_id,longitude,latitude,dispatch_user,dispatch_start_time,dispatch_end_time,dispatch_content,dispatch_result,dispose_measure,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_application_innovation_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_application_innovation</srcSql>-->
+<!--            <destTable>ja_gd_application_innovation</destTable>-->
+<!--            <destTableFields>id,case_name,belong_domain,innovation_status,application_scenario_desc,matter_name,resource_name,resource_code,case_desc,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>case_name,belong_domain,innovation_status,application_scenario_desc,matter_name,resource_name,resource_code,case_desc,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_clue_event_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_clue_event</srcSql>-->
+<!--            <destTable>ja_gd_clue_event</destTable>-->
+<!--            <destTableFields>id,result_id,work_order_id,event_num,dispose_user,dispose_dept,longitude,latitude,event_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>result_id,work_order_id,event_num,dispose_user,dispose_dept,longitude,latitude,event_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_data_evaluation_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_data_evaluation</srcSql>-->
+<!--            <destTable>ja_gd_data_evaluation</destTable>-->
+<!--            <destTableFields>id,title,data_name,propose_dept_id,data_provide_dept_id,score,is_resolved,evaluation_content,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>title,data_name,propose_dept_id,data_provide_dept_id,score,is_resolved,evaluation_content,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_data_objection_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_data_objection where is_deleted = 0</srcSql>-->
+<!--            <destTable>ja_gd_data_objection</destTable>-->
+<!--            <destTableFields>id,title,objection_type,objection_status,catalog_resource_name,submitter,submitter_contact,handle_unit,objection_desc,objection_basis,other_objection_detail,review_opinion,apply_target_dept_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>title,objection_type,objection_status,catalog_resource_name,submitter,submitter_contact,handle_unit,objection_desc,objection_basis,other_objection_detail,review_opinion,apply_target_dept_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_data_objection_attachment_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_data_objection_attachment</srcSql>-->
+<!--            <destTable>ja_gd_data_objection_attachment</destTable>-->
+<!--            <destTableFields>id,objection_id,attach_id,attach_name,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>objection_id,attach_id,attach_name,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_flyer_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_flyer where is_deleted = 0</srcSql>-->
+<!--            <destTable>ja_gd_flyer</destTable>-->
+<!--            <destTableFields>id,flyer_id,flyer_name,flyer_phone,region_code,flight_hours,project_experience,technical_strength,skilled_uav_type,skilled_task_type,flyer_address,certification,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>flyer_id,flyer_name,flyer_phone,region_code,flight_hours,project_experience,technical_strength,skilled_uav_type,skilled_task_type,flyer_address,certification,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_implement_list_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_implement_list where is_deleted = 0</srcSql>-->
+<!--            <destTable>ja_gd_implement_list</destTable>-->
+<!--            <destTableFields>id,matter_name,matter_code,area_code,area_name,org_code,org_name,catalog_code,implement_code,implement_name,process_definition_id,process_instance_id,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>matter_name,matter_code,area_code,area_name,org_code,org_name,catalog_code,implement_code,implement_name,process_definition_id,process_instance_id,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+        <job>
+            <name>ja_gd_manage_device_sync</name>
+            <cron>0/10 * * * * ?</cron>
+            <srcSql>SELECT id,airport_id,device_sn,child_sn,device_name,longitude,latitude,nickname,device_type,device_payload,ST_GeomFromText(geom) as geom,firmware_version,mode_code,insure_expired_time,traffic_remaining,traffic_expire_time,location,height,is_with_dock,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted from ja_gd_manage_device</srcSql>
+            <destTable>ja_gd_manage_device</destTable>
+            <destTableFields>id,airport_id,device_sn,child_sn,device_name,longitude,latitude,nickname,device_type,device_payload,geom,firmware_version,mode_code,insure_expired_time,traffic_remaining,traffic_expire_time,location,height,is_with_dock,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>
+            <destTableKey>id</destTableKey>
+            <destTableUpdate>airport_id,device_sn,child_sn,device_name,longitude,latitude,nickname,device_type,device_payload,geom,firmware_version,mode_code,insure_expired_time,traffic_remaining,traffic_expire_time,location,height,is_with_dock,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>
+        </job>
+<!--        <job>-->
+<!--            <name>ja_gd_material_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_material</srcSql>-->
+<!--            <destTable>ja_gd_material</destTable>-->
+<!--            <destTableFields>id,material_name,necessity,is_all_scenario,material_desc,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>material_name,necessity,is_all_scenario,material_desc,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_operational_revenue_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_operational_revenue</srcSql>-->
+<!--            <destTable>ja_gd_operational_revenue</destTable>-->
+<!--            <destTableFields>id,operating_income,total_cost,net_profit,financial_irr,market_space,create_time,create_user,create_dept,update_time,update_user,nick_name,is_deleted,earn_forecast</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>operating_income,total_cost,net_profit,financial_irr,market_space,create_time,create_user,create_dept,update_time,update_user,nick_name,is_deleted,earn_forecast</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_patrol_task_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_patrol_task</srcSql>-->
+<!--            <destTable>ja_gd_patrol_task</destTable>-->
+<!--            <destTableFields>id,work_order_id,task_no,patrol_task_name,patrol_task_type,execute_time,airline_id,patrol_route_url,recommend_flyer_name,device_id,task_desc,reject_reason,task_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>work_order_id,task_no,patrol_task_name,patrol_task_type,execute_time,airline_id,patrol_route_url,recommend_flyer_name,device_id,task_desc,reject_reason,task_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_supply_demand_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_supply_demand</srcSql>-->
+<!--            <destTable>ja_gd_supply_demand</destTable>-->
+<!--            <destTableFields>id,demand_name,demand_type,contact_person,contact_phone,contact_email,demand_status,update_cycle,apply_basis,share_type,application_scene,responsible_dept_id,apply_target_dept_id,data_source,demand_info,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>demand_name,demand_type,contact_person,contact_phone,contact_email,demand_status,update_cycle,apply_basis,share_type,application_scene,responsible_dept_id,apply_target_dept_id,data_source,demand_info,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_supply_demand_audit_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_supply_demand_audit</srcSql>-->
+<!--            <destTable>ja_gd_supply_demand_audit</destTable>-->
+<!--            <destTableFields>id,demand_id,audit_status,audit_opinion,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>demand_id,audit_status,audit_opinion,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_supply_demand_audit_attachment_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_supply_demand_audit_attachment</srcSql>-->
+<!--            <destTable>ja_gd_supply_demand_audit_attachment</destTable>-->
+<!--            <destTableFields>id,demand_id,attach_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>demand_id,attach_id,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_task_result_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_task_result</srcSql>-->
+<!--            <destTable>ja_gd_task_result</destTable>-->
+<!--            <destTableFields>id,patrol_task_id,result_code,result_url,shoot_time,photo_data,longitude,latitude,distribute_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>patrol_task_id,result_code,result_url,shoot_time,photo_data,longitude,latitude,distribute_status,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_thing_list_material_rel_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_thing_list_material_rel</srcSql>-->
+<!--            <destTable>ja_gd_thing_list_material_rel</destTable>-->
+<!--            <destTableFields>id,implement_list_id,material_id,sort,scenario_config,status,create_user,create_dept,create_time,update_user,update_time,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>implement_list_id,material_id,sort,scenario_config,status,create_user,create_dept,create_time,update_user,update_time,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_work_order_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT id,work_order_name,work_order_code,work_order_type,device_load_demand,recommend_device_ids,work_order_status,execute_start_time,execute_end_time,service_party,ST_AsText(geom) as geom,remark,reject_reason,full_snapshot,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted from ja_gd_work_order</srcSql>-->
+<!--            <destTable>ja_gd_work_order</destTable>-->
+<!--            <destTableFields>id,work_order_name,work_order_code,work_order_type,device_load_demand,recommend_device_ids,work_order_status,execute_start_time,execute_end_time,service_party,geom,remark,reject_reason,full_snapshot,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>work_order_name,work_order_code,work_order_type,device_load_demand,recommend_device_ids,work_order_status,execute_start_time,execute_end_time,service_party,geom,remark,reject_reason,full_snapshot,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_gd_work_order_flow_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_gd_work_order_flow</srcSql>-->
+<!--            <destTable>ja_gd_work_order_flow</destTable>-->
+<!--            <destTableFields>id,flow_name,flow_status,flow_desc,work_order_id,work_status,operator,type,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>flow_name,flow_status,flow_desc,work_order_id,work_status,operator,type,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>ja_log_operation_log_sync</name>-->
+<!--            <cron>0 35 16 * * ?</cron>-->
+<!--            <srcSql>SELECT * from ja_log_operation_log</srcSql>-->
+<!--            <destTable>ja_log_operation_log</destTable>-->
+<!--            <destTableFields>id,tenant_id,service_id,server_host,server_ip,env,type,title,method,request_uri,user_agent,remote_ip,method_class,method_name,params,create_by,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,service_id,server_host,server_ip,env,type,title,method,request_uri,user_agent,remote_ip,method_class,method_name,params,create_by,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>manage_device_per_share_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from manage_device_per_share</srcSql>-->
+<!--            <destTable>manage_device_per_share</destTable>-->
+<!--            <destTableFields>id,device_sn,loan_from_dept_id,loan_to_dept_id,device_per_menu_id,create_user,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>device_sn,loan_from_dept_id,loan_to_dept_id,device_per_menu_id,create_user,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>sys_config_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from sys_config</srcSql>-->
+<!--            <destTable>sys_config</destTable>-->
+<!--            <destTableFields>id,name,dept_id,create_time,update_time,remark,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>name,dept_id,create_time,update_time,remark,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+    </jobs>
+</root>
\ No newline at end of file
diff --git a/jobs20260226.xml b/jobs20260226.xml
new file mode 100644
index 0000000..b813c85
--- /dev/null
+++ b/jobs20260226.xml
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+    <code>4500000001</code>
+    <source>
+        <url>jdbc:mysql://139.196.74.78:3308/jagzw_test</url>
+        <username>root</username>
+        <password>jxpskj_2018</password>
+        <dbtype>mysql</dbtype>
+        <driver>com.mysql.cj.jdbc.Driver</driver>
+    </source>
+    <dest>
+        <url>jdbc:postgresql://139.196.74.78:5433/jagzw_test?currentSchema=jagzw</url>
+        <username>gaussdb</username>
+        <password>Ztzf@81f4</password>
+        <dbtype>postgresql</dbtype>
+        <driver>org.postgresql.Driver</driver>
+    </dest>
+    <jobs>
+<!--        <job>-->
+<!--            &lt;!&ndash; job的名称,每一个job的名称最好不一样 &ndash;&gt;-->
+<!--            <name>blade_attach_sync</name>-->
+<!--            &lt;!&ndash; 定时调度cron表达式 &ndash;&gt;-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            &lt;!&ndash; 源数据库的查询语句 &ndash;&gt;-->
+<!--            <srcSql>SELECT * from blade_attach</srcSql>-->
+<!--            &lt;!&ndash; 目标数据库的数据表 &ndash;&gt;-->
+<!--            <destTable>blade_attach</destTable>-->
+<!--            &lt;!&ndash; 目标数据库数据表的字段,必须和源数据库中查询语句的字段保持一致 &ndash;&gt;-->
+<!--            <destTableFields>id,tenant_id,link,domain_url,name,nick_name,original_name,extension,attach_size,patrol_task_id,result_type,device_sn,workspace_id,metadata,drone_data,remark,md5,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            &lt;!&ndash; 根据此字段判断同步的数据是否在目标数据库总存在 &ndash;&gt;-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            &lt;!&ndash; 如果目标数据库中存在destTableKey标签字段相同的数据,则更新此字段 &ndash;&gt;-->
+<!--            <destTableUpdate>tenant_id,link,domain_url,name,nick_name,original_name,extension,attach_size,patrol_task_id,result_type,device_sn,workspace_id,metadata,drone_data,remark,md5,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dept_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dept</srcSql>-->
+<!--            <destTable>blade_dept</destTable>-->
+<!--            <destTableFields>id,dept_code,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,dept_nature,bing_id,bind_code,deployment_mode,area_code,status,is_deleted,create_time,update_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>dept_code,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,dept_nature,bing_id,bind_code,deployment_mode,area_code,status,is_deleted,create_time,update_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dict_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dict</srcSql>-->
+<!--            <destTable>blade_dict</destTable>-->
+<!--            <destTableFields>id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_dict_biz_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_dict_biz</srcSql>-->
+<!--            <destTable>blade_dict_biz</destTable>-->
+<!--            <destTableFields>id,tenant_id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_job_info_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_job_info</srcSql>-->
+<!--            <destTable>blade_job_info</destTable>-->
+<!--            <destTableFields>id,job_server_id,job_id,job_name,job_description,job_params,time_expression_type,time_expression,execute_type,processor_type,processor_info,max_instance_num,concurrency,instance_time_limit,instance_retry_num,task_retry_num,min_cpu_cores,min_memory_space,min_disk_space,designated_workers,max_worker_count,notify_user_ids,enable,dispatch_strategy,lifecycle,alert_threshold,statistic_window_len,silence_window_len,log_type,log_level,extra,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>job_server_id,job_id,job_name,job_description,job_params,time_expression_type,time_expression,execute_type,processor_type,processor_info,max_instance_num,concurrency,instance_time_limit,instance_retry_num,task_retry_num,min_cpu_cores,min_memory_space,min_disk_space,designated_workers,max_worker_count,notify_user_ids,enable,dispatch_strategy,lifecycle,alert_threshold,statistic_window_len,silence_window_len,log_type,log_level,extra,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_job_server_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_job_server</srcSql>-->
+<!--            <destTable>blade_job_server</destTable>-->
+<!--            <destTableFields>id,job_server_name,job_server_url,job_app_name,job_app_password,job_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>job_server_name,job_server_url,job_app_name,job_app_password,job_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_log_api_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_log_api</srcSql>-->
+<!--            <destTable>blade_log_api</destTable>-->
+<!--            <destTableFields>id,tenant_id,service_id,server_host,server_ip,env,type,title,method,request_uri,user_agent,remote_ip,method_class,method_name,params,time,create_by,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,service_id,server_host,server_ip,env,type,title,method,request_uri,user_agent,remote_ip,method_class,method_name,params,time,create_by,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_log_error_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_log_error</srcSql>-->
+<!--            <destTable>blade_log_error</destTable>-->
+<!--            <destTableFields>id,tenant_id,service_id,server_host,server_ip,env,method,request_uri,user_agent,stack_trace,exception_name,message,line_number,remote_ip,method_class,file_name,method_name,params,create_by,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,service_id,server_host,server_ip,env,method,request_uri,user_agent,stack_trace,exception_name,message,line_number,remote_ip,method_class,file_name,method_name,params,create_by,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_log_usual_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_log_usual</srcSql>-->
+<!--            <destTable>blade_log_usual</destTable>-->
+<!--            <destTableFields>id,tenant_id,service_id,server_host,server_ip,env,log_level,log_id,log_data,method,request_uri,remote_ip,method_class,method_name,user_agent,params,create_by,create_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,service_id,server_host,server_ip,env,log_level,log_id,log_data,method,request_uri,remote_ip,method_class,method_name,user_agent,params,create_by,create_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_menu_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_menu</srcSql>-->
+<!--            <destTable>blade_menu</destTable>-->
+<!--            <destTableFields>id,parent_id,code,name,alias,path,source,sort,category,sys_type,action,is_open,is_device,component,remark,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>parent_id,code,name,alias,path,source,sort,category,sys_type,action,is_open,is_device,component,remark,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_model_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_model</srcSql>-->
+<!--            <destTable>blade_model</destTable>-->
+<!--            <destTableFields>id,datasource_id,model_name,model_code,model_table,model_class,model_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>datasource_id,model_name,model_code,model_table,model_class,model_remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_model_prototype_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_model_prototype</srcSql>-->
+<!--            <destTable>blade_model_prototype</destTable>-->
+<!--            <destTableFields>id,model_id,jdbc_name,jdbc_type,jdbc_comment,property_type,property_entity,property_name,is_list,is_form,is_row,component_type,dict_code,is_required,is_query,query_type,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>model_id,jdbc_name,jdbc_type,jdbc_comment,property_type,property_entity,property_name,is_list,is_form,is_row,component_type,dict_code,is_required,is_query,query_type,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_notice_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_notice</srcSql>-->
+<!--            <destTable>blade_notice</destTable>-->
+<!--            <destTableFields>id,tenant_id,title,category,release_time,content,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,title,category,release_time,content,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_oss_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_oss</srcSql>-->
+<!--            <destTable>blade_oss</destTable>-->
+<!--            <destTableFields>id,tenant_id,category,oss_code,endpoint,transform_endpoint,access_key,secret_key,bucket_name,app_id,region,remark,is_def,expire,object_dir_prefix,name,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,category,oss_code,endpoint,transform_endpoint,access_key,secret_key,bucket_name,app_id,region,remark,is_def,expire,object_dir_prefix,name,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_param_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_param</srcSql>-->
+<!--            <destTable>blade_param</destTable>-->
+<!--            <destTableFields>id,param_name,param_key,param_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>param_name,param_key,param_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_post_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_post</srcSql>-->
+<!--            <destTable>blade_post</destTable>-->
+<!--            <destTableFields>id,tenant_id,category,post_code,post_name,sort,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,category,post_code,post_name,sort,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_process_leave_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_process_leave</srcSql>-->
+<!--            <destTable>blade_process_leave</destTable>-->
+<!--            <destTableFields>id,process_definition_id,process_instance_id,start_time,end_time,reason,task_user,apply_time,attach_url,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>process_definition_id,process_instance_id,start_time,end_time,reason,task_user,apply_time,attach_url,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_region_sync</name>-->
+<!--            <cron>00 56 15 06 02 ?</cron>-->
+<!--            <srcSql>SELECT * from blade_region limit 650000,100000</srcSql>-->
+<!--            <destTable>blade_region</destTable>-->
+<!--            <destTableFields>id,code,parent_code,ancestors,name,province_code,province_name,city_code,city_name,district_code,district_name,town_code,town_name,village_code,village_name,region_level,type,sort,remark,status,create_time,update_time</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>code,parent_code,ancestors,name,province_code,province_name,city_code,city_name,district_code,district_name,town_code,town_name,village_code,village_name,region_level,type,sort,remark,status,create_time,update_time</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_report_file_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_report_file</srcSql>-->
+<!--            <destTable>blade_report_file</destTable>-->
+<!--            <destTableFields>id,name,content,create_time,update_time,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>name,content,create_time,update_time,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_role_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_role</srcSql>-->
+<!--            <destTable>blade_role</destTable>-->
+<!--            <destTableFields>id,tenant_id,parent_id,role_name,sort,role_alias,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,parent_id,role_name,sort,role_alias,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_role_menu_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_role_menu</srcSql>-->
+<!--            <destTable>blade_role_menu</destTable>-->
+<!--            <destTableFields>id,menu_id,role_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>menu_id,role_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_role_scope_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_role_scope</srcSql>-->
+<!--            <destTable>blade_role_scope</destTable>-->
+<!--            <destTableFields>id,scope_category,scope_id,role_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>scope_category,scope_id,role_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_scope_api_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_scope_api</srcSql>-->
+<!--            <destTable>blade_scope_api</destTable>-->
+<!--            <destTableFields>id,menu_id,resource_code,scope_name,scope_path,scope_type,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>menu_id,resource_code,scope_name,scope_path,scope_type,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_scope_data_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_scope_data</srcSql>-->
+<!--            <destTable>blade_scope_data</destTable>-->
+<!--            <destTableFields>id,menu_id,resource_code,scope_name,scope_field,scope_class,scope_column,scope_type,scope_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>menu_id,resource_code,scope_name,scope_field,scope_class,scope_column,scope_type,scope_value,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_sms_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_sms</srcSql>-->
+<!--            <destTable>blade_sms</destTable>-->
+<!--            <destTableFields>id,tenant_id,category,sms_code,template_id,access_key,secret_key,region_id,sign_name,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,category,sms_code,template_id,access_key,secret_key,region_id,sign_name,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_tenant_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_tenant</srcSql>-->
+<!--            <destTable>blade_tenant</destTable>-->
+<!--            <destTableFields>id,tenant_id,tenant_name,domain_url,background_url,linkman,contact_number,address,account_number,expire_time,package_id,datasource_id,license_key,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,tenant_name,domain_url,background_url,linkman,contact_number,address,account_number,expire_time,package_id,datasource_id,license_key,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_tenant_package_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_tenant_package</srcSql>-->
+<!--            <destTable>blade_tenant_package</destTable>-->
+<!--            <destTableFields>id,package_name,menu_id,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>package_name,menu_id,remark,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_top_menu_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_top_menu</srcSql>-->
+<!--            <destTable>blade_top_menu</destTable>-->
+<!--            <destTableFields>id,tenant_id,code,name,source,sort,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,code,name,source,sort,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_top_menu_setting_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_top_menu_setting</srcSql>-->
+<!--            <destTable>blade_top_menu_setting</destTable>-->
+<!--            <destTableFields>id,top_menu_id,menu_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>top_menu_id,menu_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user</srcSql>-->
+<!--            <destTable>blade_user</destTable>-->
+<!--            <destTableFields>id,tenant_id,code,user_type,account,password,name,real_name,avatar,email,phone,birthday,sex,role_id,dept_id,post_id,flight_start_time,flight_end_time,max_login_num,expire_time,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,area_code</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,code,user_type,account,password,name,real_name,avatar,email,phone,birthday,sex,role_id,dept_id,post_id,flight_start_time,flight_end_time,max_login_num,expire_time,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,area_code</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_app_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_app</srcSql>-->
+<!--            <destTable>blade_user_app</destTable>-->
+<!--            <destTableFields>id,user_id,user_ext</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,user_ext</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_dept_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_dept</srcSql>-->
+<!--            <destTable>blade_user_dept</destTable>-->
+<!--            <destTableFields>id,user_id,dept_id</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,dept_id</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_oauth_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_oauth</srcSql>-->
+<!--            <destTable>blade_user_oauth</destTable>-->
+<!--            <destTableFields>id,tenant_id,uuid,user_id,username,nickname,avatar,blog,company,location,email,remark,gender,source</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>tenant_id,uuid,user_id,username,nickname,avatar,blog,company,location,email,remark,gender,source</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_other_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_other</srcSql>-->
+<!--            <destTable>blade_user_other</destTable>-->
+<!--            <destTableFields>id,user_id,user_ext</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,user_ext</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>blade_user_web_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from blade_user_web</srcSql>-->
+<!--            <destTable>blade_user_web</destTable>-->
+<!--            <destTableFields>id,user_id,user_ext</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>user_id,user_ext</destTableUpdate>-->
+<!--        </job>-->
+<!--        <job>-->
+<!--            <name>help_center_sync</name>-->
+<!--            <cron>0/10 * * * * ?</cron>-->
+<!--            <srcSql>SELECT * from help_center</srcSql>-->
+<!--            <destTable>help_center</destTable>-->
+<!--            <destTableFields>id,level_one_type,level_two_type,upload_user,create_time,file_path</destTableFields>-->
+<!--            <destTableKey>id</destTableKey>-->
+<!--            <destTableUpdate>level_one_type,level_two_type,upload_user,create_time,file_path</destTableUpdate>-->
+<!--        </job>-->
+    </jobs>
+</root>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..38437cf
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,120 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>cn.net.communion</groupId>
+    <artifactId>dbdatasync</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>dbdatasync</name>
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>dom4j</groupId>
+            <artifactId>dom4j</artifactId>
+            <version>1.6.1</version>
+        </dependency>
+        <!-- MySQL 驱动 -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.33</version>
+        </dependency>
+
+        <!-- PostgreSQL 驱动 -->
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>42.6.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.quartz-scheduler</groupId>
+            <artifactId>quartz</artifactId>
+            <version>2.1.3</version>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.14</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.7.5</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <version>1.6.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <version>1.7.5</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <addClasspath>true</addClasspath>
+                            <classpathPrefix>lib/</classpathPrefix>
+                            <mainClass>cn.net.communion.dbdatasync.App</mainClass>
+                        </manifest>
+                    </archive>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>maven-jetty-plugin</artifactId>
+                <version>6.1.10</version>
+
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                </includes>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+    </build>
+</project>
diff --git a/src/main/java/cn/net/communion/dbdatasync/App.java b/src/main/java/cn/net/communion/dbdatasync/App.java
new file mode 100644
index 0000000..e2b36f6
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/App.java
@@ -0,0 +1,115 @@
+package cn.net.communion.dbdatasync;
+
+import java.lang.reflect.Field;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.quartz.CronTrigger;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.SchedulerFactory;
+import org.quartz.impl.StdSchedulerFactory;
+
+import static org.quartz.CronScheduleBuilder.cronSchedule;
+import static org.quartz.TriggerBuilder.newTrigger;
+import static org.quartz.JobBuilder.newJob;
+import cn.net.communion.dbdatasync.dbhelper.Factory;
+import cn.net.communion.dbdatasync.entity.DbInfo;
+import cn.net.communion.dbdatasync.entity.JobInfo;
+/**
+ * 读取xml配置文件
+ * @author Administrator
+ *
+ */
+public class App 
+{
+	
+    private DbInfo srcDb;
+    private DbInfo destDb;
+    private List<JobInfo> jobList;
+    private String code;
+    private static Logger logger = Logger.getLogger(App.class);
+    
+    public void init(){
+    	
+        srcDb = new DbInfo();
+        destDb = new DbInfo();
+        jobList = new ArrayList<JobInfo>();
+        SAXReader reader = new SAXReader();
+        try {
+        	//读取xml的配置文件名,并获取其里面的节点
+            Element root = reader.read("jobs.xml").getRootElement();
+            Element src = root.element("source");
+            Element dest = root.element("dest");
+            Element jobs = root.element("jobs");
+            //遍历job即同步的表
+            for(Iterator it = jobs.elementIterator("job"); it.hasNext();){
+                jobList.add((JobInfo) elementInObject((Element)it.next(), new JobInfo()));
+            }
+            //
+            elementInObject(src, srcDb);
+            elementInObject(dest, destDb);
+            code = root.element("code").getTextTrim();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    public Object elementInObject(Element e, Object o) throws IllegalArgumentException, IllegalAccessException{
+        Field[] fields = o.getClass().getDeclaredFields();
+        for(int index = 0; index < fields.length; index++){
+            fields[index].setAccessible(true);
+            fields[index].set(o, e.element(fields[index].getName()).getTextTrim());
+        }
+        return o;
+    }
+    
+    public void start(){
+        for(int index = 0; index < jobList.size(); index++){
+            JobInfo jobInfo = jobList.get(index);
+            String logTitle = "[" + code + "]" + jobInfo.getName() + " ";
+            try{
+                SchedulerFactory sf = new StdSchedulerFactory();
+                Scheduler sched = sf.getScheduler();
+                JobDetail job = newJob(DataTask.class).withIdentity("job-" + jobInfo.getName(), code).build();
+                job.getJobDataMap().put("srcDb", srcDb);
+                job.getJobDataMap().put("destDb", destDb);
+                job.getJobDataMap().put("jobInfo", jobInfo);
+                job.getJobDataMap().put("logTitle", logTitle);
+                logger.info(jobInfo.getCron());
+                CronTrigger trigger = newTrigger()
+                                .withIdentity("trigger-" +  jobInfo.getName(), code)
+                                .withSchedule(cronSchedule(jobInfo.getCron())).build();
+                sched.scheduleJob(job, trigger);
+                sched.start();
+            }catch(Exception e){
+                logger.info(logTitle + e.getMessage());
+                logger.info(logTitle + " run failed");
+                continue;
+            }
+        }
+    }
+    public static void main(String[] args )
+    {
+        App app = new App();
+        app.init();
+        app.start();
+        
+    }  
+   
+}
diff --git a/src/main/java/cn/net/communion/dbdatasync/DataTask.java b/src/main/java/cn/net/communion/dbdatasync/DataTask.java
new file mode 100644
index 0000000..06c2ee3
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/DataTask.java
@@ -0,0 +1,117 @@
+package cn.net.communion.dbdatasync;
+
+import cn.net.communion.dbdatasync.dbhelper.DbHelper;
+import cn.net.communion.dbdatasync.dbhelper.Factory;
+import cn.net.communion.dbdatasync.entity.DbInfo;
+import cn.net.communion.dbdatasync.entity.JobInfo;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.Date;
+
+import org.apache.log4j.Logger;
+import org.quartz.Job;
+import org.quartz.JobDataMap;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+public class DataTask implements Job {
+    private Logger logger = Logger.getLogger(DataTask.class);
+
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException {
+        logger.info("开始任务调度: " + new Date());
+        Connection inConn = null;
+        Connection outConn = null;
+        JobDataMap data = context.getJobDetail().getJobDataMap();
+        DbInfo srcDb = (DbInfo) data.get("srcDb");
+        DbInfo destDb = (DbInfo) data.get("destDb");
+        JobInfo jobInfo = (JobInfo) data.get("jobInfo");
+        String logTitle = (String) data.get("logTitle");
+
+        try {
+            // 校验任务信息
+            if (jobInfo == null || jobInfo.getSrcSql() == null || jobInfo.getSrcSql().isEmpty()) {
+                logger.error("任务 SQL 语句为空,请检查配置");
+                return;
+            }
+
+            // 创建数据库连接
+            inConn = createConnection(srcDb);
+            outConn = createConnection(destDb);
+            if (inConn == null || outConn == null) {
+                logger.error("数据库连接失败,请检查配置");
+                return;
+            }
+
+            // 拼接并执行 SQL
+            DbHelper dbHelper = Factory.create(destDb.getDbtype());
+            long start = new Date().getTime();
+
+            logger.debug("srcDb: " + srcDb);
+            logger.debug("destDb: " + destDb);
+            logger.debug("jobInfo: " + jobInfo);
+            logger.debug("dbHelper: " + dbHelper);
+
+            if (dbHelper == null) {
+                logger.error("无法创建 DbHelper 实例,请检查数据库类型配置");
+                return;
+            }
+
+            String sql = dbHelper.assembleSQL(jobInfo.getSrcSql(), inConn, jobInfo);
+            logger.info("组装SQL耗时: " + (new Date().getTime() - start) + "ms");
+            if (sql != null) {
+                logger.debug("Generated SQL: " + sql);
+                long eStart = new Date().getTime();
+                dbHelper.executeSQL(sql, outConn);
+                outConn.commit(); // 提交事务
+                logger.info("执行SQL语句耗时: " + (new Date().getTime() - eStart) + "ms");
+            }
+        } catch (SQLException e) {
+            logger.error(logTitle + " SQL执行出错: " + e.getMessage());
+            try {
+                if (outConn != null) outConn.rollback(); // 回滚事务
+            } catch (SQLException rollbackEx) {
+                logger.error("事务回滚失败: " + rollbackEx.getMessage());
+            }
+        } finally {
+            destoryConnection(inConn); // 关闭源数据库连接
+            destoryConnection(outConn); // 关闭目标数据库连接
+        }
+    }
+
+    /**
+     * 创建数据库连接
+     *
+     * @param db 数据库配置信息
+     * @return 数据库连接对象,失败返回 null
+     */
+    private Connection createConnection(DbInfo db) {
+        try {
+            Class.forName(db.getDriver());
+            Connection conn = DriverManager.getConnection(db.getUrl(), db.getUsername(), db.getPassword());
+            conn.setAutoCommit(false);
+            return conn;
+        } catch (Exception e) {
+            logger.error("数据库连接创建失败: " + e.getMessage());
+        }
+        return null;
+    }
+
+    /**
+     * 关闭数据库连接
+     *
+     * @param conn 数据库连接对象
+     */
+    private void destoryConnection(Connection conn) {
+        try {
+            if (conn != null) {
+                conn.close();
+                logger.info("数据库连接已关闭");
+            }
+        } catch (SQLException e) {
+            logger.error("关闭数据库连接失败: " + e.getMessage());
+        }
+    }
+}
diff --git a/src/main/java/cn/net/communion/dbdatasync/Tool.java b/src/main/java/cn/net/communion/dbdatasync/Tool.java
new file mode 100644
index 0000000..d129c3d
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/Tool.java
@@ -0,0 +1,15 @@
+package cn.net.communion.dbdatasync;
+
+public class Tool {
+    public static String generateString(int length){
+        if(length < 1) length = 6;
+        String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+        String genStr = "";
+        for(int index = 0; index < length; index++)
+        {
+            genStr = genStr + str.charAt((int) ((Math.random() * 100) % 26));
+        }
+//        System.out.println(genStr);
+        return genStr;
+    }
+}
diff --git a/src/main/java/cn/net/communion/dbdatasync/dbhelper/DbHelper.java b/src/main/java/cn/net/communion/dbdatasync/dbhelper/DbHelper.java
new file mode 100644
index 0000000..14364d2
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/dbhelper/DbHelper.java
@@ -0,0 +1,14 @@
+package cn.net.communion.dbdatasync.dbhelper;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import cn.net.communion.dbdatasync.entity.JobInfo;
+
+public interface DbHelper {
+	public String assembleSQL(String paramString, Connection paramConnection, JobInfo paramJobInfo)
+		    throws SQLException;
+	public void executeSQL(String sql, Connection conn)
+		    throws SQLException;
+
+}
diff --git a/src/main/java/cn/net/communion/dbdatasync/dbhelper/Factory.java b/src/main/java/cn/net/communion/dbdatasync/dbhelper/Factory.java
new file mode 100644
index 0000000..fbe95e7
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/dbhelper/Factory.java
@@ -0,0 +1,18 @@
+package cn.net.communion.dbdatasync.dbhelper;
+
+import cn.net.communion.dbdatasync.dbhelper.impl.MySql;
+import cn.net.communion.dbdatasync.dbhelper.impl.PostgreSql;
+import cn.net.communion.dbdatasync.dbhelper.impl.SqlServer;
+
+public class Factory {
+    public static DbHelper create(String dbType) {
+        switch (dbType.toLowerCase()) {
+            case "mysql":
+                return new MySql();
+            case "postgresql":
+                return new PostgreSql();
+            default:
+                throw new IllegalArgumentException("Unsupported database type: " + dbType);
+        }
+    }
+}
diff --git a/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/MySql.java b/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/MySql.java
new file mode 100644
index 0000000..dfae0a3
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/MySql.java
@@ -0,0 +1,67 @@
+package cn.net.communion.dbdatasync.dbhelper.impl;
+
+import cn.net.communion.dbdatasync.Tool;
+import cn.net.communion.dbdatasync.dbhelper.DbHelper;
+import cn.net.communion.dbdatasync.entity.JobInfo;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.apache.log4j.Logger;
+
+public class MySql implements DbHelper {
+    private Logger logger = Logger.getLogger(MySql.class);
+
+    public String assembleSQL(String srcSql, Connection conn, JobInfo jobInfo) throws SQLException {
+        String uniqueName = Tool.generateString(6) + "_" + jobInfo.getName();
+        String[] fields = jobInfo.getDestTableFields().split(",");
+        String[] updateFields = jobInfo.getDestTableUpdate().split(",");
+        String destTable = jobInfo.getDestTable();
+        String destTableKey = jobInfo.getDestTableKey();
+        PreparedStatement pst = conn.prepareStatement(srcSql);
+        ResultSet rs = pst.executeQuery();
+        StringBuffer sql = new StringBuffer();
+        sql.append("insert into ").append(jobInfo.getDestTable()).append(" (").append(jobInfo.getDestTableFields()).append(") values ");
+        long count = 0;
+        while (rs.next()) {
+            sql.append("(");
+            for (int index = 0; index < fields.length; index++) {
+                sql.append("'").append(rs.getString(fields[index])).append(index == (fields.length - 1) ? "'" : "',");
+            }
+            sql.append("),");
+            count++;
+        }
+        if (rs != null) {
+            rs.close();
+        }
+        if (pst != null) {
+            pst.close();
+        }
+        if (count > 0) {
+            sql = sql.deleteCharAt(sql.length() - 1);
+            if ((!jobInfo.getDestTableUpdate().equals("")) && (!jobInfo.getDestTableKey().equals(""))) {
+                sql.append(" on duplicate key update ");
+                for (int index = 0; index < updateFields.length; index++) {
+                    sql.append(updateFields[index]).append("= values(").append(updateFields[index]).append(index == (updateFields.length - 1) ? ")" : "),");
+                }
+                return new StringBuffer("alter table ").append(destTable).append(" add constraint ").append(uniqueName).append(" unique (").append(destTableKey).append(");").append(sql.toString())
+                                .append(";alter table ").append(destTable).append(" drop index ").append(uniqueName).toString();
+            }
+            return sql.toString();
+        }
+        return null;
+    }
+
+    public void executeSQL(String sql, Connection conn) throws SQLException {
+        PreparedStatement pst = conn.prepareStatement("");
+        String[] sqlList = sql.split(";");
+        for (int index = 0; index < sqlList.length; index++) {
+            pst.addBatch(sqlList[index]);
+        }
+        pst.executeBatch();
+        conn.commit();
+        pst.close();
+    }
+}
diff --git a/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java b/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java
new file mode 100644
index 0000000..4940e46
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java
@@ -0,0 +1,84 @@
+package cn.net.communion.dbdatasync.dbhelper.impl;
+
+import cn.net.communion.dbdatasync.dbhelper.DbHelper;
+import cn.net.communion.dbdatasync.entity.JobInfo;
+import org.apache.log4j.Logger;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.List;
+
+public class PostgreSql implements DbHelper {
+    private Logger logger = Logger.getLogger(PostgreSql.class);
+
+    @Override
+    public String assembleSQL(String srcSql, Connection conn, JobInfo jobInfo) throws SQLException {
+        String[] fields = jobInfo.getDestTableFields().split(",");
+        String destTable = jobInfo.getDestTable();
+
+        PreparedStatement pst = conn.prepareStatement(srcSql);
+        ResultSet rs = pst.executeQuery();
+        StringBuilder sql = new StringBuilder();
+        sql.append("INSERT INTO ").append(destTable).append(" (").append(jobInfo.getDestTableFields()).append(") VALUES ");
+
+        long count = 0;
+        while (rs.next()) {
+            sql.append("(");
+            for (int index = 0; index < fields.length; index++) {
+                String value = rs.getString(fields[index]);
+                if (value == null) {
+                    sql.append("NULL"); // 显式处理 NULL 值
+                } else {
+                    sql.append("'").append(value).append("'"); // 字符串值加引号
+                }
+                if (index < fields.length - 1) {
+                    sql.append(", ");
+                }
+            }
+            sql.append("),");
+            count++;
+        }
+
+        if (rs != null) {
+            rs.close();
+        }
+        if (pst != null) {
+            pst.close();
+        }
+
+        if (count > 0) {
+            sql = new StringBuilder(sql.substring(0, sql.length() - 1)); // 删除最后一个逗号
+            return sql.toString();
+        }
+        return null;
+    }
+
+
+
+    @Override
+    public void executeSQL(String sql, Connection conn) throws SQLException {
+        logger.debug("Executing SQL: " + sql);
+        try (PreparedStatement pst = conn.prepareStatement(sql)) {
+            pst.execute();
+            conn.commit();
+        }
+    }
+
+    // 辅助方法:设置参数
+    private void setParameters(PreparedStatement pst, List<Object> params) throws SQLException {
+        for (int i = 0; i < params.size(); i++) {
+            pst.setObject(i + 1, params.get(i));
+        }
+    }
+
+    // 辅助方法:序列化 SQL 和参数
+    private String serializeSqlWithParams(List<String> sqlStatements, List<List<Object>> paramLists) {
+        StringBuilder result = new StringBuilder();
+        for (int i = 0; i < sqlStatements.size(); i++) {
+            result.append(sqlStatements.get(i)).append("; ");
+        }
+        return result.toString();
+    }
+}
diff --git a/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/SqlServer.java b/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/SqlServer.java
new file mode 100644
index 0000000..7e870b9
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/SqlServer.java
@@ -0,0 +1,60 @@
+package cn.net.communion.dbdatasync.dbhelper.impl;
+
+import cn.net.communion.dbdatasync.dbhelper.DbHelper;
+import cn.net.communion.dbdatasync.entity.JobInfo;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+public class SqlServer implements DbHelper {
+    private Logger logger = Logger.getLogger(SqlServer.class);
+
+    public String assembleSQL(String srcSql, Connection conn, JobInfo jobInfo) throws SQLException {
+        String fieldStr = jobInfo.getDestTableFields();
+        String[] fields = jobInfo.getDestTableFields().split(",");
+        String[] updateFields = jobInfo.getDestTableUpdate().split(",");
+        String destTableKey = jobInfo.getDestTableKey();
+        String destTable = jobInfo.getDestTable();
+        Statement stat = conn.createStatement();
+        ResultSet rs = stat.executeQuery(srcSql);
+        StringBuffer sql = new StringBuffer();
+        long count = 0;
+        while (rs.next()) {
+            sql.append("if not exists (select ").append(destTableKey).append(" from ").append(destTable).append(" where ").append(destTableKey).append("='").append(rs.getString(destTableKey))
+                            .append("')").append("insert into ").append(destTable).append("(").append(fieldStr).append(") values(");
+            for (int index = 0; index < fields.length; index++) {
+                sql.append("'").append(rs.getString(fields[index])).append(index == (fields.length - 1) ? "'" : "',");
+            }
+            sql.append(") else update ").append(destTable).append(" set ");
+            for (int index = 0; index < updateFields.length; index++) {
+                sql.append(updateFields[index]).append("='").append(rs.getString(updateFields[index])).append(index == (updateFields.length - 1) ? "'" : "',");
+            }
+            sql.append(" where ").append(destTableKey).append("='").append(rs.getString(destTableKey)).append("';");
+            count++;
+            // this.logger.info("第" + count + "耗时: " + (new Date().getTime() - oneStart) + "ms");
+        }
+        this.logger.info("总共查询到 " + count + " 条记录");
+        if (rs != null) {
+            rs.close();
+        }
+        if (stat != null) {
+            stat.close();
+        }
+        return count > 0 ? sql.toString() : null;
+    }
+
+    public void executeSQL(String sql, Connection conn) throws SQLException {
+        PreparedStatement pst = conn.prepareStatement(sql);
+        pst.executeUpdate();
+        conn.commit();
+        pst.close();
+    }
+}
diff --git a/src/main/java/cn/net/communion/dbdatasync/entity/DbInfo.java b/src/main/java/cn/net/communion/dbdatasync/entity/DbInfo.java
new file mode 100644
index 0000000..44b757f
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/entity/DbInfo.java
@@ -0,0 +1,40 @@
+package cn.net.communion.dbdatasync.entity;
+
+public class DbInfo extends Throwable {
+    String url;
+    String username;
+    String password;
+    String dbtype;
+    String driver;
+    
+    public String getUrl() {
+        return url;
+    }
+    public void setUrl(String url) {
+        this.url = url;
+    }
+    public String getUsername() {
+        return username;
+    }
+    public void setUsername(String username) {
+        this.username = username;
+    }
+    public String getPassword() {
+        return password;
+    }
+    public void setPassword(String password) {
+        this.password = password;
+    }
+    public String getDbtype() {
+        return dbtype;
+    }
+    public void setDbtype(String dbtype) {
+        this.dbtype = dbtype;
+    }
+    public String getDriver() {
+        return driver;
+    }
+    public void setDriver(String driver) {
+        this.driver = driver;
+    }
+}
diff --git a/src/main/java/cn/net/communion/dbdatasync/entity/JobInfo.java b/src/main/java/cn/net/communion/dbdatasync/entity/JobInfo.java
new file mode 100644
index 0000000..6d4f7a4
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/entity/JobInfo.java
@@ -0,0 +1,54 @@
+package cn.net.communion.dbdatasync.entity;
+
+public class JobInfo extends Throwable {
+    String name;
+    String cron;
+    String srcSql;
+    String destTable;
+    String destTableFields;
+    String destTableKey;
+    String destTableUpdate;
+    
+    public String getName() {
+        return name;
+    }
+    public void setName(String name) {
+        this.name = name;
+    }    
+    public String getCron() {
+        return cron;
+    }
+    public void setCron(String cron) {
+        this.cron = cron;
+    }
+    public String getSrcSql() {
+        return srcSql;
+    }
+    public void setSrcSql(String srcSql) {
+        this.srcSql = srcSql;
+    }
+    public String getDestTable() {
+        return destTable;
+    }
+    public void setDestTable(String destTable) {
+        this.destTable = destTable;
+    }
+    public String getDestTableFields() {
+        return destTableFields;
+    }
+    public void setDestTableFields(String destTableFields) {
+        this.destTableFields = destTableFields;
+    }
+    public String getDestTableKey() {
+        return destTableKey;
+    }
+    public void setDestTableKey(String destTableKey) {
+        this.destTableKey = destTableKey;
+    }
+    public String getDestTableUpdate() {
+        return destTableUpdate;
+    }
+    public void setDestTableUpdate(String destTableUpdate) {
+        this.destTableUpdate = destTableUpdate;
+    }
+}
diff --git a/src/main/java/log4j.properties b/src/main/java/log4j.properties
new file mode 100644
index 0000000..1ce40d4
--- /dev/null
+++ b/src/main/java/log4j.properties
@@ -0,0 +1,20 @@
+# ????????? UTF-8
+log4j.appender.A1.Encoding=UTF-8
+log4j.appender.A2.Encoding=UTF-8
+
+# ??????
+log4j.rootCategory=INFO,A1,A2
+log4j.logger.cn.net.communion.dbdatasync=DEBUG
+
+# ?????
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=[%d{ISO8601}] %-5p [%t] %C{1}:%L - %m%n
+
+# ????
+log4j.appender.A2=org.apache.log4j.RollingFileAppender
+log4j.appender.A2.File=./databaseSync.log
+log4j.appender.A2.MaxFileSize=50MB
+log4j.appender.A2.MaxBackupIndex=20
+log4j.appender.A2.layout=org.apache.log4j.PatternLayout
+log4j.appender.A2.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c - %m%n
diff --git a/src/test/java/cn/net/communion/dbdatasync/AppTest.java b/src/test/java/cn/net/communion/dbdatasync/AppTest.java
new file mode 100644
index 0000000..6d74dec
--- /dev/null
+++ b/src/test/java/cn/net/communion/dbdatasync/AppTest.java
@@ -0,0 +1,38 @@
+package cn.net.communion.dbdatasync;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

--
Gitblit v1.9.3