增加用户版本
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 7038ae8..867022d 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.3 virtualenv at ~/Dev/py27-dev64" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.3 virtualenv at ~/.venv/py27 (1)" project-jdk-type="Python SDK" />
 </project>
 
diff --git a/.idea/v2convert.iml b/.idea/v2convert.iml
index 1ba372b..96c0d23 100644
--- a/.idea/v2convert.iml
+++ b/.idea/v2convert.iml
@@ -2,7 +2,7 @@
 <module type="PYTHON_MODULE" version="4">
   <component name="NewModuleRootManager">
     <content url="file://$MODULE_DIR$" />
-    <orderEntry type="jdk" jdkName="Python 2.7.3 virtualenv at ~/Dev/py27-dev64" jdkType="Python SDK" />
+    <orderEntry type="jdk" jdkName="Python 2.7.3 virtualenv at ~/.venv/py27 (1)" jdkType="Python SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
 </module>
diff --git a/convert-example.json b/convert-example.json
index def9d61..6c313d0 100755
--- a/convert-example.json
+++ b/convert-example.json
@@ -5,6 +5,7 @@
  // desc: 转换规则的描述

  // pre_exec: 执行转换前需要执行一次的 sql 语句,格式如 [ "insert into ....", "delete from ...."],

  //            可以有多条 sql 语句, 这个操作是在原始数据库执行

+ // pre_dst_exec: 执行转换前执行一次的 sql, 这个操作在目标库执行

  // post_exec: 转换完成后需要执行一次的 sql 语句, 格式同 pre_exec, 这个操作是在目标数据库执行

  // src_sql: 转换原始表查询 sql

  // dest_column: 转换目标表 column , src_sql 查询出来的字段与 dest_column 的字段

diff --git a/convert-shisu-test.json b/convert-shisu-test.json
new file mode 100644
index 0000000..b02b7d1
--- /dev/null
+++ b/convert-shisu-test.json
@@ -0,0 +1,228 @@
+[
+    {
+        "desc": "账户信息表",
+        "name": "T_ACCOUNT",
+        "action": "truncate",
+        "src_sql": "select (case when a.account_id is null then ''
+                            else '1'||substr(a.account_id,8) end) accno,
+                    a.cut_name,'2001',a.password,a.customer_id,a.card_id,a.purse_id,
+                    '' singlemaxamt,'' daycostmaxamt,'' daycostamt,'' cardmaxbal,
+                    a.current_state,(case when a.current_state=1 then c.deposit_fee
+                                     else 0 end) foregift,
+                    0 ydaybal,a.last_bala,a.last_freebala,a.last_frozebala,0 subsidybal,
+                    0 subsidyno,a.card_balance,a.consume_count,0 dpscnt,a.consume_count paycnt,
+                    0 termid,'' transtime,0 lastsubsidyamt,0 lastsubsidyno,0 lastbala,
+                    0 lastcardcnt,0 lastdpscnt,0 lastpaycnt,'' lasttransdate,'' lastaccdate,
+                    a.open_date,a.close_date from ykt_cur.t_aif_account a left join
+                    ykt_cur.t_pif_card c on a.card_id=c.card_id where a.act_type=1",
+        "dest_column": "ACCNO, ACCNAME, SUBJNO, ACCPWD, CUSTID, CARDNO, PURSENO, SINGLEMAXAMT,
+                        DAYCOSTMAXAMT,DAYCOSTAMT, CARDMAXBAL, STATUS, FOREGIFT, YDAYBAL,
+                        BALANCE, AVAILBAL, FROZEBAL, SUBSIDYBAL, SUBSIDYNO, CARDBAL, CARDCNT,
+                        DPSCNT, PAYCNT, TERMID, TRANSTIME, LASTSUBSIDYAMT, LASTSUBSIDYNO,
+                        LASTCARDBAL, LASTCARDCNT, LASTDPSCNT, LASTPAYCNT, LASTTRANSDATE,
+                        LASTACCDATE, OPENDATE, CLOSEDATE",
+        "post_exec":["update t_syskey set keyval=(select max(to_number(substr(accno,2)))
+                      from t_account) where keycode='CARDACCNO'",
+                      "update t_account set balance=balance+60, availbal=AVAILBAL+60, foregift=120
+                      where accno='1' || substr('1000000000192778', 8) "]
+    },
+    {
+        "name": "T_INNERACC",
+        "action": "truncate",
+        "desc": "内部账户表",
+        "src_sql": "select  (case when a.account_id='1011' then '1001'
+                                  when a.account_id='1021' then '1002'
+                                  when a.account_id='1031' then '112101'
+                                  when a.account_id='1041' then '112102'
+                                  when a.account_id='1051' then '112103'
+                                  when a.account_id='2051' then '2002'
+                                  when a.account_id='2061' then '220299'
+                                  when a.account_id='2071' then '2203'
+                                  when a.account_id='5011' then '6002'
+                                  when a.account_id='5021' then '6005'
+                                  when a.account_id='5051' then '6003'
+                                  when a.account_id='5041' then '6006'
+                                  when a.account_id='5071' then '6001'
+                                  else a.account_id end) account_id,
+                    a.cut_name, (case when a.account_id='1011' then '1001'
+                                      when a.account_id='1021' then '1002'
+                                      when a.account_id='1031' then '112101'
+                                      when a.account_id='1041' then '112102'
+                                      when a.account_id='1051' then '112103'
+                                      when a.account_id='2051' then '2002'
+                                      when a.account_id='2061' then '220299'
+                                      when a.account_id='2071' then '2203'
+                                      when a.account_id='5011' then '6002'
+                                      when a.account_id='5021' then '6005'
+                                      when a.account_id='5051' then '6003'
+                                      when a.account_id='5041' then '6006'
+                                      when a.account_id='5071' then '6001'
+                                      else a.account_id end) subno,
+                    0 ,last_BALA,(CASE WHEN SUBSTR(A.ACCOUNT_ID,1,1)='1' THEN 1
+                                      ELSE 2 END) BALFLAG,
+                    '','' from (select rtrim(a.account_id) account_id,a.last_bala,
+                        a.cut_name from ykt_cur.t_aif_account a where a.act_type=7 and
+                    a.account_id not in ('1122','2031','2041','1071')) a",
+        "dest_column": "ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE, BALFLAG, LASTTRANSDATE,
+                        LASTACCDATE",
+        "remark": "导入内部账户,并更新错误的借贷标志",
+        "post_exec": ["update t_inneracc set balance=abs(balance),ydaybal=abs(ydaybal),
+                        balflag=1 where accno in ('6201','6202')",
+                        "update t_syspara set paraval=:bala_date where paraid=2",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('112201', '易支付充值款', '112201', 0, 0, 1, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('112299', '其他应收款', '112299', 0, 0, 1, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('6004', '搭伙费收入', '6004', 0, 0, 2, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('2006', '水控存款', '2006', 0, 0, 2, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('220201', '批量销户应付款', '220201', 0, 0, 2, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('6201', '营业外支出', '6201', 0, 0, 1, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('6202', '商户提成支出', '6202', 0, 0, 1, null, null)"
+                        ]
+    },
+    {
+        "name": "T_SHOPACC",
+        "action": "truncate",
+        "desc": "商户账户表",
+        "src_sql": "select (case when a.account_id is null then ''
+                                 else '2'||substr(a.account_id,8) end) accno,
+                    s.shop_id shopid,a.cut_name,'2004',a.password,a.current_state,
+                    0 ydaybal,a.last_bala,a.last_freebala,a.last_frozebala,'' lasttransdate,
+                    '' lastaccdate, a.open_date,a.close_date from
+                    ykt_cur.t_aif_account a left join ykt_cur.t_cif_shop s on
+                    a.customer_id=s.cut_id where a.act_type=2 and s.shop_id is not null
+                    order by s.shop_id",
+        "dest_column": "ACCNO, SHOPID, ACCNAME, SUBJNO, ACCPWD, STATUS, YDAYBAL, BALANCE,
+                        AVAILBAL, FROZEBAL, LASTTRANSDATE, LASTACCDATE, OPENDATE, CLOSEDATE",
+        "post_exec": ["update t_syskey set keyval=(select max(to_number(substr(accno,2)))
+                        from t_shopacc) where keycode='SHOPACCNO'"]
+    },
+    {
+        "name": "T_RPTACCBAL",
+        "action": "truncate",
+        "desc": "账户结算表",
+        "src_sql": "select :tx_date,'2001',(case when a.account_id is null then ''
+                                                   else '1'||substr(a.account_id,8) end) accno,
+                    2 ,last_bala from ykt_cur.t_aif_account a where act_type=1
+                    union all
+                    select :tx_date,'2004',(case when a.account_id is null then ''
+                                                   else '2'||substr(a.account_id,8) end) accno,
+                    2,last_bala  from ykt_cur.t_aif_account a where act_type=2
+                    union all
+                    select :tx_date, (case when a.account_id='1011' then '1001'
+                                             when a.account_id='1021' then '1002'
+                                             when a.account_id='1031' then '112101'
+                                             when a.account_id='1041' then '112102'
+                                             when a.account_id='1051' then '112103'
+                                             when a.account_id='2051' then '2002'
+                                             when a.account_id='2061' then '220299'
+                                             when a.account_id='2071' then '2203'
+                                             when a.account_id='5011' then '6002'
+                                             when a.account_id='5021' then '6005'
+                                             when a.account_id='5051' then '6003'
+                                             when a.account_id='5041' then '6006'
+                                             when a.account_id='5071' then '6001'
+                                             else rtrim(a.account_id) end) subno,
+                        (case when a.account_id='1011' then '1001'
+                              when a.account_id='1021' then '1002'
+                              when a.account_id='1031' then '112101'
+                              when a.account_id='1041' then '112102'
+                              when a.account_id='1051' then '112103'
+                              when a.account_id='2051' then '2002'
+                              when a.account_id='2061' then '220299'
+                              when a.account_id='2071' then '2203'
+                              when a.account_id='5011' then '6002'
+                              when a.account_id='5021' then '6005'
+                              when a.account_id='5051' then '6003'
+                              when a.account_id='5041' then '6006'
+                              when a.account_id='5071' then '6001'
+                              else rtrim(a.account_id) end) account_id,
+                        (case when substr(a.account_id,1,1)='1' then 1 else 2 end) flag,
+                        last_bala from ykt_cur.t_aif_account a where act_type=7 and
+                        a.account_id not in ('1122','2031','2041','1071')",
+        "dest_column": "ACCDATE, SUBJNO, ACCNO, BALFLAG, BALANCE",
+        "remark": "导入内部账户报表,并更新错误的借贷标志",
+        "post_exec": ["update t_rptaccbal set balance=abs(balance),balflag=1
+                        where accno in ('6201','6202')",
+                        // "insert into t_rptaccbal(accdate,subjno,accno,balflag,balance)
+                        //     select :tx_date,s.subjno,s.subjno,
+                        //         (case when substr(s.subjno,1,1)='1' then 1
+                        //               else 2 end) flag1,0
+                        //     from t_subject s left join t_rptaccbal b on
+                        //     (s.subjno=b.subjno and b.accdate=:tx_date)
+                        //     where b.accdate is null",
+                        "insert into t_rptaccbal(accdate,subjno,accno,balflag,balance)
+                            select :tx_date,s.subjno,s.subjno,2,0 from t_rptsubjbal s
+                            where s.subjno in (2001,2004,2202,2006,220201,6004)
+                            and s.accdate=:tx_date",
+                        "insert into t_rptaccbal(accdate,subjno,accno,balflag,balance)
+                            select :tx_date,s.subjno,s.subjno,1,0 from t_rptsubjbal s
+                            where s.subjno in (6201,6202)
+                            and s.accdate=:tx_date",
+                        "update t_rptaccbal set balance=balance+60 where
+                        accno='1' || substr('1000000000192778', 8) and accdate=:tx_date"]
+    },
+    {
+        "name": "T_RPTSUBJBAL",
+        "action": "truncate",
+        "desc": "科目结算表",
+        "src_sql": "select :tx_date,'2001',2 ,sum(last_bala),0,0,2,sum(last_bala)
+                    from ykt_cur.t_aif_account a where act_type=1
+                    union all
+                    select :tx_date,'2004',2,sum(last_bala),0,0,2,sum(last_bala)
+                    from ykt_cur.t_aif_account a where act_type=2
+                    union all select :tx_date,
+                                (case when a.account_id='1011' then '1001'
+                                      when a.account_id='1021' then '1002'
+                                      when a.account_id='1031' then '112101'
+                                      when a.account_id='1041' then '112102'
+                                      when a.account_id='1051' then '112103'
+                                      when a.account_id='2051' then '2002'
+                                      when a.account_id='2061' then '220299'
+                                      when a.account_id='2071' then '2203'
+                                      when a.account_id='5011' then '6002'
+                                      when a.account_id='5021' then '6005'
+                                      when a.account_id='5051' then '6003'
+                                      when a.account_id='5041' then '6006'
+                                      when a.account_id='5071' then '6001'
+                                      when a.account_id='2081' then '2202'
+                                      else rtrim(a.account_id) end) subno,
+                                (case when substr(a.account_id,1,1)='1' then 1
+                                      else 2 end) flag1,
+                                sum(last_bala),0,0,
+                                (case when substr(a.account_id,1,1)='1' then 1
+                                      else 2 end) flag2,sum(last_bala) from
+                                ykt_cur.t_aif_account a where act_type=7 and
+                                a.account_id not in ('1122','2031','2041','1071')
+                                group by a.account_id",
+        "dest_column": "ACCDATE, SUBJNO, BEGINBALFLAG, BEGINBAL, DRAMT, CRAMT,
+                        ENDBALFLAG, ENDBAL",
+        "post_exec" : ["insert into t_rptsubjbal(ACCDATE, SUBJNO, BEGINBALFLAG, BEGINBAL,
+                        DRAMT, CRAMT, ENDBALFLAG, ENDBAL)
+                        select :tx_date, subjno, 1,
+                            (select sum(beginbal) from t_rptsubjbal t where accdate=:tx_date
+                                and t.subjno like s.subjno || '__'),
+                            0,0,1,
+                            (select sum(endbal) from t_rptsubjbal t where accdate=:tx_date
+                                and t.subjno like s.subjno || '__') from t_subject s
+                        where subjno in ('1121','2202')",
+                        "update t_rptsubjbal set beginbalflag=1,endbalflag=1 where
+                        subjno in ('6201','6202')",
+                        "update t_rptsubjbal set beginbal=beginbal+60, endbal=endbal+60
+                        where accdate=:tx_date and subjno='2001'",
+                        "delete from t_servicelog"],
+        "remark": "生成结算科目数据"
+    }
+]
diff --git a/convert-shisu.json b/convert-shisu.json
new file mode 100755
index 0000000..2c119e6
--- /dev/null
+++ b/convert-shisu.json
@@ -0,0 +1,40 @@
+/*

+ // 配置格式说明:

+ // name: 转换目标表名

+ // action: 装换前的操作,truncate 表示先执行truncate 操作,none 表示无任何动作

+ // desc: 转换规则的描述

+ // pre_exec: 执行转换前需要执行一次的 sql 语句,格式如 [ "insert into ....", "delete from ...."],

+ //            可以有多条 sql 语句, 这个操作是在原始数据库执行

+ // post_exec: 转换完成后需要执行一次的 sql 语句, 格式同 pre_exec, 这个操作是在目标数据库执行

+ // src_sql: 转换原始表查询 sql

+ // dest_column: 转换目标表 column , src_sql 查询出来的字段与 dest_column 的字段

+*/

+[

+    {

+        "name": "T_DEVICE_TEMP",

+        "action": "truncate",

+        "desc": "设备注册表",

+        "src_sql": "SELECT T1.DEVICE_ID,T1.DEVICE_NAME,T1.DEVPHY999_ID,T1.DEV999_NO,

+                    T1.PHYTYPE DEVPHYTYPE,T1.DEVTYPE,'' DEVVERNO,T1.CARDSTR,T2.DEVICE_ID,

+                    1 RUNSTATUS,(case when T1.STATE_ID between 1 and 4 then 1

+                                 else 2 end) STATUS,

+                    T1.PORTCOUNT,T1.PORTNO,T1.JOINMODE,T1.COMADD,nvl(trim(T1.PORT),0),T1.BAUDRATE,

+                    '' CARDSET,T1.BSHEETVER,T1.LASTTRASERNO,T1.OPERATE_TIME LASTTRANSTIME,

+                    trim(T1.PUSERNO),0 MAXAMT,T1.SUBSYSTEM_ID,T1.AREA,'' DOORLSTVER,T1.DEV_USAGE,

+                    '' OPENDATE,'' CLOSEDATE,'' BATCHNO,'' LASTSAVED,'' REMARK FROM

+                    YKT_CUR.T_PIF_DEVICE T1 LEFT JOIN YKT_CUR.T_PIF_DEVICE T2 ON

+                    T1.FDEV_ID=T2.DEVICE_ID AND T1.DEVPHY999_ID NOT IN ('FFFFFFFF','00000000')

+                    AND T2.STATE_ID<5 ORDER BY T1.DEVICE_ID",

+        "dest_column": "DEVICEID, DEVICENAME, DEVPHYID,DEVICENO, DEVPHYTYPE, DEVTYPECODE,

+                        DEVVERNO, CARDPHYTYPE, FDEVICEID,RUNSTATUS, STATUS,SVRPORTCNT,

+                        SVRPORTNO,COMMTYPE, IP,PORTNO, BAUDRATE, CARDSET,CARDVERNO,

+                        LASTSEQNO,LASTTRANSTIME,PURSENO, MAXAMT, SYSID,AREACODE,

+                        DOORLSTVER, DEVUSAGE,OPENDATE, CLOSEDATE, BATCHNO,

+                        LASTSAVED, REMARK",

+        "post_exec": ["update t_device_temp x set devphyid=substr(devphyid,1,4)

+                              || lpad(to_number(substr(devphyid,5,1), 'XX'),2,'0')

+                              || lpad(to_number(substr(devphyid,6,1), 'XX'),2,'0')

+                              || substr(devphyid,7,2)

+                        where x.devphytype=1001 and length(x.devphyid) = 8"]

+    }

+]

diff --git a/convert-shu-backup.json b/convert-shu-backup.json
new file mode 100644
index 0000000..f6ca3d9
--- /dev/null
+++ b/convert-shu-backup.json
@@ -0,0 +1,106 @@
+
+    {
+        "name": "T_AREA",
+        "action": "truncate",
+        "desc": "区域信息表",
+        "src_sql": "select area_no,area_name,father_area_no,'' oldareacode,
+                    arealevel,address,comments from ykt_cur.t_pif_area",
+        "dest_column": "AREACODE, AREANAME, FAREACODE, OLDAREACODE, AREALEVEL, ADDR, REMARK"
+    },
+    {
+        "name": "T_CUSTTYPE",
+        "action": "truncate",
+        "desc": "客户类型表",
+        "src_sql": "SELECT CUT_TYPE,TYPE_NAME,CUT_TYPE,0 AREACODE,0 OLDCUSTTYPE,0 USEFLAG
+                    FROM YKT_CUR.T_CIF_CUTTYPEFEE",
+        "dest_column": "CUSTTYPE, CUSTTYPENAME, FEETYPE,AREACODE, OLDCUSTTYPE, USEFLAG"
+    },
+    {
+        "name": "T_DEPT",
+        "action": "truncate",
+        "desc": "部门表",
+        "src_sql": "SELECT DEPT_CODE,0 AREACODE,DEPT_NAME,E_NAME,DEPT_NAME,PARENTDEPT_CODE,
+                    DEPT_LEVEL,IS_ACADEMY,DEPT_CODE,0 USEFLAG,'' LASTSAVED
+                    FROM YKT_CUR.T_CIF_DEPT",
+                    "dest_column": "DEPTCODE, AREACODE, DEPTNAME, DEPTENAME, DEPTFULLNAME, FDEPTCODE,  
+                    DEPTLEVEL, DEPTTYPE, OLDDEPTCODE, USEFLAG, LASTSAVED"
+    },
+    
+    {
+        "name": "T_FEETYPE",
+        "action": "truncate",
+        "desc": "收费类别表",
+        "src_sql": "SELECT FEE_TYPE,SUBSTR(FEE_NAME,1,60),IS_OUTFEE,0,0
+                    FROM YKT_CUR.T_PIF_FEETYPE",
+        "dest_column": "FEETYPE, FEENAME, BOARDFLAG,BOARDRATE, DPSRATE"
+    },
+     {
+        "name": "T_SUBSYSTEM",
+        "action": "truncate",
+        "desc": "子系统表",
+        "src_sql": "SELECT SYSTEM_ID,SYSTEM_NAME,SYSTEM_TYPE,AREA,SERVER_ID,MAC_ADDR,IP,
+                    PORT, '' CARDVERNO,INIT_KEY,DYNA_KEY,SYNCH_TIME,
+                    (case when STATE=1 then 1
+                          when state=2 then 1
+                          when state=3 then 2
+                          when state=4 then 3
+                          else  4 end) runstatus ,
+                    (case when STATE=6 then 2 else 1 end) status ,
+                    '' OPENDATE,'' CLOSEDATE,'' REMARK FROM
+                    YKT_CUR.T_PIF_SUBSYSTEM",
+        "dest_column": "SYSID, SYSNAME, SYSTYPE, AREACODE, SERVERID, MACADDR, IP, PORT,
+                        CARDVERNO, INITKEY, DYNAKEY, SYNCTIME, RUNSTATUS, STATUS,
+                        OPENDATE, CLOSEDATE, REMARK"
+    },
+    {
+        "name": "T_SPECIALTY",
+        "action": "truncate",
+        "desc": "专业信息表",
+        "src_sql": "SELECT S_CODE,S_NAME,1 USEFLAG,'' LASTSAVED FROM
+                    YKT_CUR.T_CIF_SPECIALITY WHERE S_CODE <>'' and s_code<> '0'",
+        "dest_column": "SPECIALTYCODE, SPECIALTYNAME, USEFLAG, LASTSAVED"
+    },
+    {
+        "name": "T_OPERATOR",
+        "action": "truncate",
+        "desc": "操作员表",
+        "src_sql": "select rownum,oper_code,2,100,oper_name, phone, mobile,
+                    email, addr, pwd, 1 from ykt_cur.t_pif_operator",
+        "dest_column": "OPERID, OPERCODE, OPERTYPE, BRANCHNO, OPERNAME, TEL, MOBILE,
+                        EMAIL, ADDR, OPERPWD, STATUS",
+        "post_exec": ["update t_syskey set keyval=(select max(operid) from t_operator)
+                        where keycode='OPERID'",
+                      "delete from t_operrole",
+                      "insert into t_operrole(operroleid, operid, roleid) values(1, 26, 1)",
+                      "update t_operator set branchno=101 where opername like '%宝山%'",
+                      "update t_operator set branchno=102 where opername like '%延长%'",
+                      "update t_operator set branchno=103 where opername like '%嘉定%'"
+                      ]
+    },
+    ,
+    {
+        "name": "T_OPERATOR",
+        "action": "truncate",
+        "desc": "操作员表",
+        "src_sql": "select rownum,oper_code,2,
+                    case when g.group_id = 1000 then 101
+                         when g.group_id = 1001 then 102
+                         when g.group_id = 1002 then 103
+                         when g.group_id = 1003 then 105
+                         when g.group_id = 1004 then 100
+                         when g.group_id = 1005 then 106
+                         when g.group_id = 1006 then 104
+                         else 100 end,
+                    oper_name, phone, mobile,
+                    email, addr, pwd, 1 from ykt_cur.t_pif_operator t left join 
+                    ykt_cur.t_oper_group g on t.oper_code=g.oper_id order by t.oper_code",
+        "dest_column": "OPERID, OPERCODE, OPERTYPE, BRANCHNO, OPERNAME, TEL, MOBILE,
+                        EMAIL, ADDR, OPERPWD, STATUS",
+        "post_exec": ["update t_syskey set keyval=(select max(operid) from t_operator)
+                        where keycode='OPERID'",
+                      "delete from t_operrole",
+                      "insert into t_operrole(operroleid, operid, roleid) values(1, 51, 1)"
+                      ]
+    }
+    
+    
\ No newline at end of file
diff --git a/convert-shu.json b/convert-shu.json
new file mode 100755
index 0000000..4f24c9b
--- /dev/null
+++ b/convert-shu.json
@@ -0,0 +1,379 @@
+/*

+ // 配置格式说明:

+ // name: 转换目标表名

+ // action: 装换前的操作,truncate 表示先执行truncate 操作,none 表示无任何动作

+ // desc: 转换规则的描述

+ // pre_exec: 执行转换前需要执行一次的 sql 语句,格式如 [ "insert into ....", "delete from ...."],

+ //            可以有多条 sql 语句, 这个操作是在原始数据库执行

+ // post_exec: 转换完成后需要执行一次的 sql 语句, 格式同 pre_exec, 这个操作是在目标数据库执行

+ // src_sql: 转换原始表查询 sql

+ // dest_column: 转换目标表 column , src_sql 查询出来的字段与 dest_column 的字段

+*/

+[

+    {

+        "name": "T_DEVICE",

+        "action": "truncate",

+        "desc": "设备注册表",

+        "src_sql": "SELECT T1.DEVICE_ID,T1.DEVICE_NAME,T1.DEVPHY999_ID,T1.DEV999_NO,

+                    T1.PHYTYPE DEVPHYTYPE,T1.DEVTYPE,'' DEVVERNO,T1.CARDSTR,T2.DEVICE_ID,

+                    1 RUNSTATUS,(case when T1.STATE_ID between 1 and 4 then 1

+                                 else 2 end) STATUS,

+                    T1.PORTCOUNT,T1.PORTNO,T1.JOINMODE,T1.COMADD,nvl(trim(T1.PORT),0),T1.BAUDRATE,

+                    '' CARDSET,T1.BSHEETVER,T1.LASTTRASERNO,T1.OPERATE_TIME LASTTRANSTIME,

+                    trim(T1.PUSERNO),0 MAXAMT,T1.SUBSYSTEM_ID,T1.AREA,'' DOORLSTVER,T1.DEV_USAGE,

+                    '' OPENDATE,'' CLOSEDATE,'' BATCHNO,'' LASTSAVED,'' REMARK FROM

+                    YKT_CUR.T_PIF_DEVICE T1 LEFT JOIN YKT_CUR.T_PIF_DEVICE T2 ON

+                    T1.FDEV_ID=T2.DEVICE_ID AND T1.DEVPHY999_ID NOT IN ('FFFFFFFF','00000000')

+                    AND T2.STATE_ID<5 ORDER BY T1.DEVICE_ID",

+        "dest_column": "DEVICEID, DEVICENAME, DEVPHYID,DEVICENO, DEVPHYTYPE, DEVTYPECODE,

+                        DEVVERNO, CARDPHYTYPE, FDEVICEID,RUNSTATUS, STATUS,SVRPORTCNT,

+                        SVRPORTNO,COMMTYPE, IP,PORTNO, BAUDRATE, CARDSET,CARDVERNO,

+                        LASTSEQNO,LASTTRANSTIME,PURSENO, MAXAMT, SYSID,AREACODE,

+                        DOORLSTVER, DEVUSAGE,OPENDATE, CLOSEDATE, BATCHNO,

+                        LASTSAVED, REMARK",

+        "post_exec": ["update t_syskey set keyval=(select max(deviceid) from t_device)

+                        where keycode='TERMID'",

+                    "update t_device x set devphyid=substr(devphyid,1,4)

+                              || lpad(to_number(substr(devphyid,5,1), 'XX'),2,'0')

+                              || lpad(to_number(substr(devphyid,6,1), 'XX'),2,'0')

+                              || substr(devphyid,7,2)

+                              where x.devphytype=1001 and length(x.devphyid) = 8  

+                              and regexp_like(devphyid, '[A-F0-9]{8}')"]

+    },

+    {

+        "name": "T_CUSTOMER",

+        "action": "truncate",

+        "desc": "客户信息表",

+        "src_sql": "select cut_id,stuemp_no,cut_type,fee_type,cut_state,cut_name,area,

+                    classdept_no,classdept_name,s_code,class_no,class_no,1 idtype,man_id,

+                    sex,'' country,nation,'' email,tel,'' mobile, address,'' zipcode,

+                    '' custattr,substr(in_date,1,8),substr(can_time,1,8),

+                    substr(reg_time,1,8) opendate,'' closedate,batch_no,1 openflag,

+                    0 holdcardcnt,1 useflag,0 eaccflag,'' lastsaved

+                    from ykt_cur.t_cif_customer",

+        "dest_column": "CUSTID, STUEMPNO, CUSTTYPE, FEETYPE, STATUS, CUSTNAME,  AREACODE,

+                        DEPTCODE, DEPTFULLNAME, SPECIALTYCODE, CLASSCODE, CLASSNAME,

+                        IDTYPE, IDNO, SEX,  COUNTRY, NATION, EMAIL, TEL, MOBILE, ADDR,

+                        ZIPCODE, CUSTATTR, INDATE,OUTDATE, OPENDATE, CLOSEDATE, BATCHNO,

+                        OPENFLAG, HOLDCARDCNT, USEFLAG, EACCFLAG, LASTSAVED",

+        "post_exec": ["update t_customer a set holdcardcnt=(select count(*) from t_card t

+                        where t.custid=a.custid and t.status=1)",

+                      "update t_syskey set keyval=(select max(custid) from t_customer)

+                        where keycode='CUSTID'"]

+    },

+    {

+        "name": "T_CARD",

+        "action": "truncate",

+        "desc": "卡信息表",

+        "src_sql": "select c.card_id,(case when a.account_id is null then '3000000001'

+                                      else '1'||substr(a.account_id,8) end),

+                    type_id,phytype,(case when c1.fee_type>0 then c1.fee_type

+                                     else c1.cut_type end) feetype,

+                    c.cosumer_id,c.showid,c.physical_no,c.password,

+                    (case when c.end_time ='' then '20000101'

+                     else c.end_time end) expiredate,

+                    substr(c.state_id,1,1) status,

+                    (case when substr(c.state_id,2,1)='1' then '1'

+                     else '0' end) lossflag,

+                    '' lossdate,'' lossefttime,

+                    (case when substr(c.state_id,3,1)='1' then '1'

+                        else '0' end) frozeflag,

+                    '' frozedate,'0' badflag,'' badtype,'' baddate,'0' lockflag,

+                    '' lockdate,c.begin_time opendate,'' closedate,'' cardverno,'' lastsaved

+                    from YKT_CUR.T_PIF_CARD c  left join ykt_cur.t_aif_account a on

+                    c.card_id=a.card_id  left join ykt_cur.t_cif_customer c1 on

+                    c.cosumer_id=c1.cut_id  order by c.card_id",

+        "dest_column": "CARDNO, ACCNO, CARDTYPE,CARDPHYTYPE, FEETYPE, CUSTID, SHOWCARDNO,

+                        CARDPHYID, CARDPWD,EXPIREDATE, STATUS, LOSSFLAG, LOSSDATE, LOSSEFTTIME,

+                        FROZEFLAG, FROZEDATE, BADFLAG, BADTYPE, BADDATE, LOCKFLAG, LOCKDATE,

+                        OPENDATE, CLOSEDATE, CARDVERNO, LASTSAVED",

+        "remark": "导入卡表前更新 begin_time 不能为空",

+        "post_exec": ["update t_syskey set keyval=(select max(cardno) from t_card)

+                        where keycode='CARDNO'",

+                      "update t_card set cardphytype=20"]

+    },

+    {

+        "name": "T_SHOPACC",

+        "action": "truncate",

+        "desc": "商户账户表",

+        "src_sql": "select (case when a.account_id is null then ''

+                                 else '2'||substr(a.account_id,8) end) accno,

+                    s.shop_id shopid,a.cut_name,'2004',a.password,a.current_state,

+                    a.last_bala ydaybal,a.last_bala balance,0,0,'' lasttransdate,

+                    '' lastaccdate, a.open_date,a.close_date from

+                    ykt_cur.t_aif_account a left join ykt_cur.t_cif_shop s on

+                    a.customer_id=s.cut_id where a.act_type=2 and s.shop_id is not null

+                    order by s.shop_id",

+        "dest_column": "ACCNO, SHOPID, ACCNAME, SUBJNO, ACCPWD, STATUS, YDAYBAL, BALANCE,

+                        AVAILBAL, FROZEBAL, LASTTRANSDATE, LASTACCDATE, OPENDATE, CLOSEDATE",

+        "post_exec": ["update t_syskey set keyval=(select max(to_number(substr(accno,2)))

+                        from t_shopacc) where keycode='SHOPACCNO'"]

+    },

+    {

+        "desc": "商户信息表",

+        "name": "T_SHOP",

+        "action": "truncate",

+        "src_sql":"select t.shop_id,t.dept_id,'' areacode,'' deptcode,t.shop_name shopname,

+        (case when t.is_leaf ='1' then 1 else  0 end) shop_type,

+        (case when t.is_leaf='1' then 1 else 0 end) accflag ,shop_state,

+        (case when a.account_id is null then '' else '2'||substr(a.account_id,8) end) accno,

+        t.man,1 idtype,t.man_id,t.tel,'' mobile,'' email,t.address,'' zipcode,

+        (case when t.is_getfee='1' then 1 else 0 end) boardfeeflag,'' RAKEOFFTYPE,

+        0, '' DEPOSITAGIO,'' DEPOSITCNT,'' DEPOSITAMT,'' DISCOUNTAMT, '' BANKCODE,

+        '' BANKACCNO,'' BANKACCNAME,'' OPENDATE,'' CLOSEDATE,'' USEFLAG

+        from ykt_cur.t_cif_shop t left join ykt_cur.t_aif_account a on

+            t.cut_id=a.customer_id and t.is_leaf='1'",

+        "dest_column": "SHOPID, FSHOPID, AREACODE,DEPTCODE, SHOPNAME, SHOPTYPE,ACCFLAG,

+                        STATUS, ACCNO, CONTACTMAN, IDTYPE, IDNO, TEL, MOBILE, EMAIL, ADDR,

+                        ZIPCODE, BOARDFEEFLAG, RAKEOFFTYPE, RAKEOFFRATE, DEPOSITAGIO,DEPOSITCNT,

+                        DEPOSITAMT, DISCOUNTAMT, BANKCODE, BANKACCNO, BANKACCNAME, OPENDATE,

+                        CLOSEDATE, USEFLAG",

+        "post_exec": ["update t_syskey set keyval=(select max(shopid) from t_shop)

+                        where keycode='SHOPID'",

+                       "update t_shop set areacode=11 where rowid in (    

+                        select rowid shop_rowid from t_shop c

+                        start with c.shopid=11

+                        connect by prior c.shopid=c.fshopid)",

+                        "update t_shop set areacode=12 where rowid in (    

+                        select rowid shop_rowid from t_shop c

+                        start with c.shopid=43

+                        connect by prior c.shopid=c.fshopid)",

+                        "update t_shop set areacode=13 where rowid in (    

+                        select rowid shop_rowid from t_shop c

+                        start with c.shopid=44

+                        connect by prior c.shopid=c.fshopid)"]

+    },

+    {

+        "name": "T_INNERACC",

+        "action": "truncate",

+        "desc": "内部账户表",

+        "src_sql": "select  (case when a.account_id='1011' then '1001'

+                                  when a.account_id='1021' then '1002'

+                                  when a.account_id='1031' then '112101'

+                                  when a.account_id='1041' then '112102'

+                                  when a.account_id='2051' then '2002'

+                                  when a.account_id='2041' then '220299'

+                                  when a.account_id='2071' then '2203'

+                                  when a.account_id='5011' then '6002'

+                                  when a.account_id='5021' then '6005'

+                                  when a.account_id='5041' then '6001'

+                                  when a.account_id='5071' then '6201'

+                                  else a.account_id end) account_id,

+                    a.cut_name, (case when a.account_id='1011' then '1001'

+                                  when a.account_id='1021' then '1002'

+                                  when a.account_id='1031' then '112101'

+                                  when a.account_id='1041' then '112102'

+                                  when a.account_id='2051' then '2002'

+                                  when a.account_id='2041' then '220299'

+                                  when a.account_id='2071' then '2203'

+                                  when a.account_id='5011' then '6002'

+                                  when a.account_id='5021' then '6005'

+                                  when a.account_id='5041' then '6001'

+                                  when a.account_id='5071' then '6201'

+                                      else a.account_id end) subno,

+                    0 ,last_BALA,(CASE WHEN SUBSTR(A.ACCOUNT_ID,1,1)='1' THEN 1

+                                      ELSE 2 END) BALFLAG,

+                    '','' from (select rtrim(a.account_id) account_id,a.last_bala,

+                        a.cut_name from ykt_cur.t_aif_account a where a.act_type=7 and

+                    a.account_id not in ('1122','2031','1071')) a",

+        "dest_column": "ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE, BALFLAG, LASTTRANSDATE,

+                        LASTACCDATE",

+        "remark": "导入内部账户,并更新错误的借贷标志",

+        "post_exec": ["update t_inneracc set balance=abs(balance),ydaybal=abs(ydaybal),

+                        balflag=1 where accno in ('6201','6202')",

+                        "update t_syspara set paraval=:bala_date where paraid=2",

+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE, BALFLAG, LASTTRANSDATE, LASTACCDATE)

+                        values ('112201', '易支付充值款', '112201', 0, 0, 1, null, null)",

+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE, BALFLAG, LASTTRANSDATE, LASTACCDATE)

+                        values ('112299', '其他应收款', '112299', 0, 0, 1, null, null)",

+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE, BALFLAG, LASTTRANSDATE, LASTACCDATE)

+                        values ('2006', '水控存款', '2006', 0, 0, 2, null, null)",

+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE, BALFLAG, LASTTRANSDATE, LASTACCDATE)

+                        values ('220201', '批量销户应付款', '220201', 0, 0, 2, null, null)",

+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE, BALFLAG, LASTTRANSDATE, LASTACCDATE)

+                        values ('6003', '商户佣金收入', '6003', 0, 0, 2, null, null)",

+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE, BALFLAG, LASTTRANSDATE, LASTACCDATE)

+                        values ('6004', '搭伙费收入', '6004', 0, 0, 2, null, null)",

+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE, BALFLAG, LASTTRANSDATE, LASTACCDATE)

+                        values ('6006', '退卡盈余收入', '6006', 0, 0, 2, null, null)",

+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE, BALFLAG, LASTTRANSDATE, LASTACCDATE)

+                        values ('6202', '商户提成支出', '6202', 0, 0, 1, null, null)"

+                        ]

+    },

+    {

+        "desc": "账户信息表",

+        "name": "T_ACCOUNT",

+        "action": "truncate",

+        "src_sql": "select (case when a.account_id is null then ''

+                            else '1'||substr(a.account_id,8) end) accno,

+                    a.cut_name,'2001',a.password,a.customer_id,a.card_id,a.purse_id,

+                    '' singlemaxamt,'' daycostmaxamt,'' daycostamt,'' cardmaxbal,

+                    a.current_state,(case when a.current_state=1 then c.deposit_fee

+                                     else 0 end) foregift,

+                    0 ydaybal,a.last_bala,a.last_freebala,a.last_frozebala,0 subsidybal,

+                    0 subsidyno,a.card_balance,a.consume_count,0 dpscnt,a.consume_count paycnt,

+                    0 termid,'' transtime,0 lastsubsidyamt,0 lastsubsidyno,0 lastbala,

+                    0 lastcardcnt,0 lastdpscnt,0 lastpaycnt,'' lasttransdate,'' lastaccdate,

+                    a.open_date,a.close_date from ykt_cur.t_aif_account a left join

+                    ykt_cur.t_pif_card c on a.card_id=c.card_id where a.act_type=1 and a.current_state<>2",

+        "dest_column": "ACCNO, ACCNAME, SUBJNO, ACCPWD, CUSTID, CARDNO, PURSENO, SINGLEMAXAMT,

+                        DAYCOSTMAXAMT,DAYCOSTAMT, CARDMAXBAL, STATUS, FOREGIFT, YDAYBAL,

+                        BALANCE, AVAILBAL, FROZEBAL, SUBSIDYBAL, SUBSIDYNO, CARDBAL, CARDCNT,

+                        DPSCNT, PAYCNT, TERMID, TRANSTIME, LASTSUBSIDYAMT, LASTSUBSIDYNO,

+                        LASTCARDBAL, LASTCARDCNT, LASTDPSCNT, LASTPAYCNT, LASTTRANSDATE,

+                        LASTACCDATE, OPENDATE, CLOSEDATE",

+        "post_exec":["update t_syskey set keyval=(select max(to_number(substr(accno,2)))

+                      from t_account) where keycode='CARDACCNO'",

+                     "update t_account set balance=balance+:diff_bala,

+                       availbal=availbal+:diff_bala where accno='1002246656'"]

+    },

+    {

+        "name": "T_SHOPPOS",

+        "action": "truncate",

+        "desc": "商户设备对应表",

+        "src_sql": "select t1.id,t1.device_id,t2.devphy999_id,t1.shop_id,t1.end_time,

+                    t1.comments,t1.begin_date,t1.end_date,1,'','' from

+                    ykt_cur.t_cif_shop_pos t1,ykt_cur.t_pif_device t2

+                    where t1.device_id=t2.device_id",

+        "dest_column": "ID, DEVICEID, DEVPHYID, SHOPID, ENDTIME, REMARK, STARTDATE,

+                        ENDDATE, STATUS, OPERCODE, LASTSAVED",

+        "post_exec" : ["update t_shoppos t set t.devphyid=(select x.devphyid from t_device x

+                        where x.deviceid=t.deviceid)"]

+    },

+    {

+        "name": "T_RPTACCBAL",

+        "action": "truncate",

+        "desc": "账户结算表",

+        "src_sql": "select :tx_date,'2001',(case when a.account_id is null then ''

+                                                   else '1'||substr(a.account_id,8) end) accno,

+                    2 ,last_bala from ykt_cur.t_aif_account a where act_type=1 and current_state<>2

+                    union all

+                    select :tx_date,'2004',(case when a.account_id is null then ''

+                                                   else '2'||substr(a.account_id,8) end) accno,

+                    2,last_bala  from ykt_cur.t_aif_account a where act_type=2 and current_state<>2

+                    union all

+                    select :tx_date, (case when a.account_id='1011' then '1001'

+                                  when a.account_id='1021' then '1002'

+                                  when a.account_id='1031' then '112101'

+                                  when a.account_id='1041' then '112102'

+                                  when a.account_id='2041' then '220299'

+                                  when a.account_id='2051' then '2002'

+                                  when a.account_id='2071' then '2203'

+                                  when a.account_id='5011' then '6002'

+                                  when a.account_id='5021' then '6005'

+                                  when a.account_id='5041' then '6001'

+                                  when a.account_id='5071' then '6201'

+                                             else rtrim(a.account_id) end) subno,

+                        (case when a.account_id='1011' then '1001'

+                                  when a.account_id='1021' then '1002'

+                                  when a.account_id='1031' then '112101'

+                                  when a.account_id='1041' then '112102'

+                                  when a.account_id='2051' then '2002'

+                                  when a.account_id='2041' then '220299'

+                                  when a.account_id='2071' then '2203'

+                                  when a.account_id='5011' then '6002'

+                                  when a.account_id='5021' then '6005'

+                                  when a.account_id='5041' then '6001'

+                                  when a.account_id='5071' then '6201'

+                              else rtrim(a.account_id) end) account_id,

+                        (case when substr(a.account_id,1,1)='1' then 1 else 2 end) flag,

+                        last_bala from ykt_cur.t_aif_account a where act_type=7 and

+                        a.account_id not in ('1122','2031','1071')",

+        "dest_column": "ACCDATE, SUBJNO, ACCNO, BALFLAG, BALANCE",

+        "remark": "导入内部账户报表,并更新错误的借贷标志",

+        "post_exec": ["update t_rptaccbal set balance=abs(balance),balflag=1

+                        where accno in ('6201','6202')",

+                        // "insert into t_rptaccbal(accdate,subjno,accno,balflag,balance)

+                        //     select :tx_date,s.subjno,s.subjno,

+                        //         (case when substr(s.subjno,1,1)='1' then 1

+                        //               else 2 end) flag1,0

+                        //     from t_subject s left join t_rptaccbal b on

+                        //     (s.subjno=b.subjno and b.accdate=:tx_date)

+                        //     where b.accdate is null",

+                        "insert into t_rptaccbal(accdate,subjno,accno,balflag,balance)

+                            select :tx_date,s.subjno,s.subjno,2,0 from t_rptsubjbal s

+                            where s.subjno in (2001,2004,2006,220201,6004)

+                            and s.accdate=:tx_date",

+                        "insert into t_rptaccbal(accdate,subjno,accno,balflag,balance)

+                            select :tx_date,s.subjno,s.subjno,1,0 from t_rptsubjbal s

+                            where s.subjno in (6202)

+                            and s.accdate=:tx_date",

+                        "update t_rptaccbal set balance=balance+1.93 where accdate=:tx_date

+                        and accno='1002246656'"

+                      ]

+    },

+    {

+        "name": "T_RPTSUBJBAL",

+        "action": "truncate",

+        "desc": "科目结算表",

+        "src_sql": "select :tx_date,'2001',2 ,sum(last_bala),0,0,2,sum(last_bala)

+                    from ykt_cur.t_aif_account a where act_type=1 and a.current_state<>2

+                    union all

+                    select :tx_date,'2004',2,sum(last_bala),0,0,2,sum(last_bala)

+                    from ykt_cur.t_aif_account a where act_type=2 and a.current_state<>2

+                    union all select :tx_date,

+                                (case when a.account_id='1011' then '1001'

+                                  when a.account_id='1021' then '1002'

+                                  when a.account_id='1031' then '112101'

+                                  when a.account_id='1041' then '112102'

+                                  when a.account_id='2051' then '2002'

+                                  when a.account_id='2041' then '220299'

+                                  when a.account_id='2071' then '2203'

+                                  when a.account_id='5011' then '6002'

+                                  when a.account_id='5021' then '6005'

+                                  when a.account_id='5041' then '6001'

+                                  when a.account_id='5071' then '6201'

+                                      else rtrim(a.account_id) end) subno,

+                                (case when substr(a.account_id,1,1)='1' then 1

+                                      else 2 end) flag1,

+                                sum(last_bala),0,0,

+                                (case when substr(a.account_id,1,1)='1' then 1

+                                      else 2 end) flag2,sum(last_bala) from

+                                ykt_cur.t_aif_account a where act_type=7 and

+                                a.account_id not in ('1122','2031','1071')

+                                group by a.account_id",

+        "dest_column": "ACCDATE, SUBJNO, BEGINBALFLAG, BEGINBAL, DRAMT, CRAMT,

+                        ENDBALFLAG, ENDBAL",

+        "post_exec" : ["insert into t_rptsubjbal(ACCDATE, SUBJNO, BEGINBALFLAG, BEGINBAL,

+                        DRAMT, CRAMT, ENDBALFLAG, ENDBAL)

+                        select :tx_date, subjno, 1,

+                            (select nvl(sum(beginbal),0) from t_rptsubjbal t where accdate=:tx_date

+                                and t.subjno like s.subjno || '__'),

+                            0,0,1,

+                            (select nvl(sum(endbal),0) from t_rptsubjbal t where accdate=:tx_date

+                                and t.subjno like s.subjno || '__') from t_subject s

+                        where subjno in ('1121','6202')",

+                        "insert into t_rptsubjbal(ACCDATE, SUBJNO, BEGINBALFLAG, BEGINBAL,

+                        DRAMT, CRAMT, ENDBALFLAG, ENDBAL)

+                        select :tx_date, subjno, 2,

+                            (select nvl(sum(beginbal),0) from t_rptsubjbal t where accdate=:tx_date

+                                and t.subjno like s.subjno || '__'),

+                            0,0,2,

+                            (select nvl(sum(endbal),0) from t_rptsubjbal t where accdate=:tx_date

+                                and t.subjno like s.subjno || '__') from t_subject s

+                        where subjno in ('2202')",

+                        "update t_rptsubjbal set beginbalflag=1,endbalflag=1,

+                        beginbal=abs(beginbal),endbal=abs(endbal) where

+                        subjno in ('6201','6202')",

+                        "update t_rptsubjbal set beginbal=beginbal+:diff_bala, endbal=endbal+:diff_bala

+                        where accdate=:tx_date and subjno='2001'",

+                        "delete from t_servicelog"],

+        "remark": "生成结算科目数据"

+    },

+    {

+        "name": "T_CARDVER",

+        "action": "truncate",

+        "desc": "卡版本号表",

+        "src_sql": " select t.operate_date, 0, 0, t.volume, t.card_id, x.physical_no, c.stuemp_no,

+                     case when is_ad = 0 then 3

+                          when is_ad = 1 then 6

+                          else 3 end ,

+                     case when t.is_ad = 0 then 1

+                          when t.is_ad = 1 then 2

+                          else 0 end , t.state_id

+                     from t_tif_black_sheet t, t_pif_card x, t_cif_customer c

+                     where t.card_id = x.card_id and x.cosumer_id = c.cut_id",

+        "dest_column": "ACCDATE, TERMID, TERMSEQNO, CARDVERNO, CARDNO, CARDPHYID,  STUEMPNO,

+                        CARDVERTYPE, ADDDELFLAG, STATUS"

+    }

+]

diff --git a/cvtcfg-shisu.ini b/cvtcfg-shisu.ini
new file mode 100644
index 0000000..b612748
--- /dev/null
+++ b/cvtcfg-shisu.ini
@@ -0,0 +1,22 @@
+[database]

+srctype=oracle

+# srcdsn=yktdb.shisu

+srchost=10.1.6.30

+srcport=1521

+srcname=yktdb

+srcuser=ykt_cur

+srcpswd=kingstar1

+

+dsttype=oracle

+# dstname=ecarddb.shisu

+dstport=1521

+#dsthost=10.1.6.110

+#dstname=ecardt

+#dstuser=ecard

+#dstpswd=kingstar

+dsthost=10.1.6.30

+dstname=ecarddb

+dstuser=ecard

+dstpswd=ecard#shisu2013

+

+commitcount=5000

diff --git a/cvtcfg-shu.ini b/cvtcfg-shu.ini
new file mode 100644
index 0000000..62f324c
--- /dev/null
+++ b/cvtcfg-shu.ini
@@ -0,0 +1,17 @@
+[database]

+srctype=oracle

+#srcdsn=

+srchost=10.10.1.253

+srcport=1521

+srcname=yktdb

+srcuser=ykt_cur

+srcpswd=kingstar

+

+dsttype=oracle

+dstname=ecarddb

+dsthost=10.10.1.253

+dstport=1521

+dstuser=ecard

+dstpswd=shu#ecard#4

+

+commitcount=2000

diff --git a/shisu-bakcup.json b/shisu-bakcup.json
new file mode 100644
index 0000000..b029754
--- /dev/null
+++ b/shisu-bakcup.json
@@ -0,0 +1,545 @@
+{
+        "desc": "商户信息表",
+        "name": "T_SHOP",
+        "action": "truncate",
+        "src_sql":"select t.shop_id,t.dept_id,'' areacode,'' deptcode,t.shop_name shopname,
+        (case when t.is_leaf ='1' then 1 else  0 end) shop_type,
+        (case when t.is_leaf='1' then 1 else 0 end) accflag ,shop_state,
+        (case when a.account_id is null then '' else '2'||substr(a.account_id,8) end) accno,
+        t.man,1 idtype,t.man_id,t.tel,'' mobile,'' email,t.address,'' zipcode,
+        (case when t.is_getfee='1' then 1 else 0 end) boardfeeflag,'' RAKEOFFTYPE,
+        t.ratio, '' DEPOSITAGIO,'' DEPOSITCNT,'' DEPOSITAMT,'' DISCOUNTAMT, '' BANKCODE,
+        '' BANKACCNO,'' BANKACCNAME,'' OPENDATE,'' CLOSEDATE,'' USEFLAG
+        from ykt_cur.t_cif_shop t left join ykt_cur.t_aif_account a on
+            t.cut_id=a.customer_id and t.is_leaf='1'",
+        "dest_column": "SHOPID, FSHOPID, AREACODE,DEPTCODE, SHOPNAME, SHOPTYPE,ACCFLAG,
+                        STATUS, ACCNO, CONTACTMAN, IDTYPE, IDNO, TEL, MOBILE, EMAIL, ADDR,
+                        ZIPCODE, BOARDFEEFLAG, RAKEOFFTYPE, RAKEOFFRATE, DEPOSITAGIO,DEPOSITCNT,
+                        DEPOSITAMT, DISCOUNTAMT, BANKCODE, BANKACCNO, BANKACCNAME, OPENDATE,
+                        CLOSEDATE, USEFLAG",
+        "post_exec": ["update t_syskey set keyval=(select max(shopid) from t_shop)
+                        where keycode='SHOPID'"]
+    },
+    {
+        "desc": "账户信息表",
+        "name": "T_ACCOUNT",
+        "action": "truncate",
+        "src_sql": "select (case when a.account_id is null then ''
+                            else '1'||substr(a.account_id,8) end) accno,
+                    a.cut_name,'2001',a.password,a.customer_id,a.card_id,a.purse_id,
+                    '' singlemaxamt,'' daycostmaxamt,'' daycostamt,'' cardmaxbal,
+                    a.current_state,(case when a.current_state=1 then c.deposit_fee
+                                     else 0 end) foregift,
+                    0 ydaybal,a.cur_bala,a.cur_freebala,a.cur_frozebala,0 subsidybal,
+                    0 subsidyno,a.card_balance,a.consume_count,0 dpscnt,a.consume_count paycnt,
+                    0 termid,'' transtime,0 lastsubsidyamt,0 lastsubsidyno,0 lastbala,
+                    0 lastcardcnt,0 lastdpscnt,0 lastpaycnt,'' lasttransdate,'' lastaccdate,
+                    a.open_date,a.close_date from ykt_cur.t_aif_account a left join
+                    ykt_cur.t_pif_card c on a.card_id=c.card_id where a.act_type=1",
+        "dest_column": "ACCNO, ACCNAME, SUBJNO, ACCPWD, CUSTID, CARDNO, PURSENO, SINGLEMAXAMT,
+                        DAYCOSTMAXAMT,DAYCOSTAMT, CARDMAXBAL, STATUS, FOREGIFT, YDAYBAL,
+                        BALANCE, AVAILBAL, FROZEBAL, SUBSIDYBAL, SUBSIDYNO, CARDBAL, CARDCNT,
+                        DPSCNT, PAYCNT, TERMID, TRANSTIME, LASTSUBSIDYAMT, LASTSUBSIDYNO,
+                        LASTCARDBAL, LASTCARDCNT, LASTDPSCNT, LASTPAYCNT, LASTTRANSDATE,
+                        LASTACCDATE, OPENDATE, CLOSEDATE",
+        "post_exec":["update t_syskey set keyval=(select max(to_number(substr(accno,2)))
+                      from t_account) where keycode='CARDACCNO'",
+                      "update t_account set balance=balance+60, availbal=AVAILBAL+60, foregift=120
+                      where accno='1' || substr('1000000000111416', 8) "]
+    },
+    {
+        "name": "T_AREA",
+        "action": "truncate",
+        "desc": "区域信息表",
+        "src_sql": "select area_no,area_name,father_area_no,'' oldareacode,
+                    arealevel,address,comments from ykt_cur.t_pif_area",
+        "dest_column": "AREACODE, AREANAME, FAREACODE, OLDAREACODE, AREALEVEL, ADDR, REMARK"
+    },
+    {
+        "name": "T_AUTHCARD",
+        "action": "truncate",
+        "desc": "授权卡信息表",
+        "src_sql": "select rownum,'' opercode,physical_no,'' showcardno,
+                    0 privilege,end_time,state_id,0 lossflag,'' lossdate,
+                    substr(begin_time,1,4)||'0101' opendate,'' closedate
+                     from YKT_CUR.T_PIF_AUTHCARD",
+        "dest_column": "CARDNO, OPERCODE, CARDPHYID, SHOWCARDNO, PRIVILEGE, EXPIREDATE,
+        STATUS, LOSSFLAG, LOSSDATE, OPENDATE, CLOSEDATE"
+    },
+    {
+        "name": "T_CARD",
+        "action": "truncate",
+        "desc": "卡信息表",
+        "src_sql": "select c.card_id,(case when a.account_id is null then '3000000001'
+                                      else '1'||substr(a.account_id,8) end),
+                    type_id,phytype,(case when c1.fee_type>0 then c1.fee_type
+                                     else c1.cut_type end) feetype,
+                    c.cosumer_id,c.showid,c.physical_no,c.password,
+                    (case when c.end_time ='' then '20000101'
+                     else c.end_time end) expiredate,
+                    substr(c.state_id,1,1) status,
+                    (case when substr(c.state_id,2,1)='1' then '1'
+                     else '0' end) lossflag,
+                    '' lossdate,'' lossefttime,
+                    (case when substr(c.state_id,3,1)='1' then '1'
+                        else '0' end) frozeflag,
+                    '' frozedate,'0' badflag,'' badtype,'' baddate,'0' lockflag,
+                    '' lockdate,c.begin_time opendate,'' closedate,'' cardverno,'' lastsaved
+                    from YKT_CUR.T_PIF_CARD c  left join ykt_cur.t_aif_account a on
+                    c.card_id=a.card_id  left join ykt_cur.t_cif_customer c1 on
+                    c.cosumer_id=c1.cut_id  order by c.card_id",
+        "dest_column": "CARDNO, ACCNO, CARDTYPE,CARDPHYTYPE, FEETYPE, CUSTID, SHOWCARDNO,
+                        CARDPHYID, CARDPWD,EXPIREDATE, STATUS, LOSSFLAG, LOSSDATE, LOSSEFTTIME,
+                        FROZEFLAG, FROZEDATE, BADFLAG, BADTYPE, BADDATE, LOCKFLAG, LOCKDATE,
+                        OPENDATE, CLOSEDATE, CARDVERNO, LASTSAVED",
+        "remark": "导入卡表前更新 begin_time 不能为空",
+        "post_exec": ["update t_syskey set keyval=(select max(cardno) from t_card)
+                        where keycode='CARDNO'",
+                      "update t_card set cardphytype=20"]
+    },
+    {
+        "name": "T_CARDVER",
+        "action": "truncate",
+        "desc": "卡版本号表",
+        "src_sql": " select t.operate_date, 0, 0, t.volume, t.card_id, x.physical_no, c.stuemp_no,
+                     case when is_ad = 0 then 3
+                          when is_ad = 1 then 6
+                          else 3 end ,
+                     case when t.is_ad = 0 then 1
+                          when t.is_ad = 1 then 2
+                          else 0 end , t.state_id
+                     from t_tif_black_sheet t, t_pif_card x, t_cif_customer c
+                     where t.card_id = x.card_id and x.cosumer_id = c.cut_id",
+        "dest_column": "ACCDATE, TERMID, TERMSEQNO, CARDVERNO, CARDNO, CARDPHYID,  STUEMPNO,
+                        CARDVERTYPE, ADDDELFLAG, STATUS"
+    },
+    {
+        "name": "T_CUSTOMER",
+        "action": "truncate",
+        "desc": "客户信息表",
+        "src_sql": "select cut_id,stuemp_no,cut_type,fee_type,cut_state,cut_name,area,
+                    classdept_no,classdept_name,s_code,class_no,class_no,1 idtype,man_id,
+                    sex,'' country,nation,'' email,tel,'' mobile, address,'' zipcode,
+                    '' custattr,substr(in_date,1,8),substr(can_time,1,8),
+                    substr(reg_time,1,8) opendate,'' closedate,batch_no,1 openflag,
+                    0 holdcardcnt,1 useflag,0 eaccflag,'' lastsaved
+                    from ykt_cur.t_cif_customer",
+        "dest_column": "CUSTID, STUEMPNO, CUSTTYPE, FEETYPE, STATUS, CUSTNAME,  AREACODE,
+                        DEPTCODE, DEPTFULLNAME, SPECIALTYCODE, CLASSCODE, CLASSNAME,
+                        IDTYPE, IDNO, SEX,  COUNTRY, NATION, EMAIL, TEL, MOBILE, ADDR,
+                        ZIPCODE, CUSTATTR, INDATE,OUTDATE, OPENDATE, CLOSEDATE, BATCHNO,
+                        OPENFLAG, HOLDCARDCNT, USEFLAG, EACCFLAG, LASTSAVED",
+        "post_exec": ["update t_customer a set holdcardcnt=(select count(*) from t_card t
+                        where t.custid=a.custid and t.status=1)",
+                      "update t_syskey set keyval=(select max(custid) from t_customer)
+                        where keycode='CUSTID'"]
+    },
+    {
+        "name": "T_CUSTTYPE",
+        "action": "truncate",
+        "desc": "客户类型表",
+        "src_sql": "SELECT CUT_TYPE,TYPE_NAME,CUT_TYPE,0 AREACODE,0 OLDCUSTTYPE,0 USEFLAG
+                    FROM YKT_CUR.T_CIF_CUTTYPEFEE",
+        "dest_column": "CUSTTYPE, CUSTTYPENAME, FEETYPE,AREACODE, OLDCUSTTYPE, USEFLAG"
+    },
+    {
+        "name": "T_DEPT",
+        "action": "truncate",
+        "desc": "部门表",
+        "src_sql": "SELECT DEPT_CODE,0 AREACODE,DEPT_NAME,E_NAME,DEPT_NAME,PARENTDEPT_CODE,
+                    DEPT_LEVEL,IS_ACADEMY,DEPT_CODE,0 USEFLAG,'' LASTSAVED
+                    FROM YKT_CUR.T_CIF_DEPT",
+        "dest_column": "DEPTCODE, AREACODE, DEPTNAME, DEPTENAME, DEPTFULLNAME, FDEPTCODE,    DEPTLEVEL, DEPTTYPE, OLDDEPTCODE, USEFLAG, LASTSAVED"
+    },
+    {
+        "name": "T_DEVICE",
+        "action": "truncate",
+        "desc": "设备注册表",
+        "src_sql": "SELECT T1.DEVICE_ID,T1.DEVICE_NAME,T1.DEVPHY999_ID,T1.DEV999_NO,
+                    T1.PHYTYPE DEVPHYTYPE,T1.DEVTYPE,'' DEVVERNO,T1.CARDSTR,T2.DEVICE_ID,
+                    1 RUNSTATUS,(case when T1.STATE_ID between 1 and 4 then 1
+                                 else 2 end) STATUS,
+                    T1.PORTCOUNT,T1.PORTNO,T1.JOINMODE,T1.COMADD,nvl(trim(T1.PORT),0),T1.BAUDRATE,
+                    '' CARDSET,T1.BSHEETVER,T1.LASTTRASERNO,T1.OPERATE_TIME LASTTRANSTIME,
+                    trim(T1.PUSERNO),0 MAXAMT,T1.SUBSYSTEM_ID,T1.AREA,'' DOORLSTVER,T1.DEV_USAGE,
+                    '' OPENDATE,'' CLOSEDATE,'' BATCHNO,'' LASTSAVED,'' REMARK FROM
+                    YKT_CUR.T_PIF_DEVICE T1 LEFT JOIN YKT_CUR.T_PIF_DEVICE T2 ON
+                    T1.FDEV_ID=T2.DEVICE_ID AND T1.DEVPHY999_ID NOT IN ('FFFFFFFF','00000000')
+                    AND T2.STATE_ID<5 ORDER BY T1.DEVICE_ID",
+        "dest_column": "DEVICEID, DEVICENAME, DEVPHYID,DEVICENO, DEVPHYTYPE, DEVTYPECODE,
+                        DEVVERNO, CARDPHYTYPE, FDEVICEID,RUNSTATUS, STATUS,SVRPORTCNT,
+                        SVRPORTNO,COMMTYPE, IP,PORTNO, BAUDRATE, CARDSET,CARDVERNO,
+                        LASTSEQNO,LASTTRANSTIME,PURSENO, MAXAMT, SYSID,AREACODE,
+                        DOORLSTVER, DEVUSAGE,OPENDATE, CLOSEDATE, BATCHNO,
+                        LASTSAVED, REMARK",
+        "post_exec": ["update t_syskey set keyval=(select max(deviceid) from t_device)
+                        where keycode='TERMID'",
+                    "update t_device x set devphyid=substr(devphyid,1,4)
+                              || lpad(to_number(substr(devphyid,5,1), 'XX'),2,'0')
+                              || lpad(to_number(substr(devphyid,6,1), 'XX'),2,'0')
+                              || substr(devphyid,7,2)
+                        where x.devphytype=1001 and length(x.devphyid) = 8"]
+    },
+    {
+        "name": "T_FEETYPE",
+        "action": "truncate",
+        "desc": "收费类别表",
+        "src_sql": "SELECT FEE_TYPE,SUBSTR(FEE_NAME,1,60),IS_OUTFEE,0,0
+                    FROM YKT_CUR.T_PIF_FEETYPE",
+        "dest_column": "FEETYPE, FEENAME, BOARDFLAG,BOARDRATE, DPSRATE"
+    },
+    {
+        "name": "T_INNERACC",
+        "action": "truncate",
+        "desc": "内部账户表",
+        "src_sql": "select  (case when a.account_id='1011' then '1001'
+                                  when a.account_id='1021' then '1002'
+                                  when a.account_id='1031' then '112101'
+                                  when a.account_id='1041' then '112102'
+                                  when a.account_id='1051' then '112103'
+                                  when a.account_id='2051' then '2002'
+                                  when a.account_id='2061' then '220299'
+                                  when a.account_id='2071' then '2203'
+                                  when a.account_id='5011' then '6002'
+                                  when a.account_id='5021' then '6005'
+                                  when a.account_id='5051' then '6003'
+                                  when a.account_id='5041' then '6006'
+                                  when a.account_id='5071' then '6001'
+                                  else a.account_id end) account_id,
+                    a.cut_name, (case when a.account_id='1011' then '1001'
+                                      when a.account_id='1021' then '1002'
+                                      when a.account_id='1031' then '112101'
+                                      when a.account_id='1041' then '112102'
+                                      when a.account_id='1051' then '112103'
+                                      when a.account_id='2051' then '2002'
+                                      when a.account_id='2061' then '220299'
+                                      when a.account_id='2071' then '2203'
+                                      when a.account_id='5011' then '6002'
+                                      when a.account_id='5021' then '6005'
+                                      when a.account_id='5051' then '6003'
+                                      when a.account_id='5041' then '6006'
+                                      when a.account_id='5071' then '6001'
+                                      else a.account_id end) subno,
+                    0 ,cur_BALA,(CASE WHEN SUBSTR(A.ACCOUNT_ID,1,1)='1' THEN 1
+                                      ELSE 2 END) BALFLAG,
+                    '','' from (select rtrim(a.account_id) account_id,a.cur_bala,
+                        a.cut_name from ykt_cur.t_aif_account a where a.act_type=7 and
+                    a.account_id not in ('1122','2031','2041','1071')) a",
+        "dest_column": "ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE, BALFLAG, LASTTRANSDATE,
+                        LASTACCDATE",
+        "remark": "导入内部账户,并更新错误的借贷标志",
+        "post_exec": ["update t_inneracc set balance=abs(balance),ydaybal=abs(ydaybal),
+                        balflag=1 where accno in ('6201','6202')",
+                        "update t_syspara set paraval=:bala_date where paraid=2",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('112201', '易支付充值款', '112201', 0, 0, 1, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('112299', '其他应收款', '112299', 0, 0, 1, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('6004', '搭伙费收入', '6004', 0, 0, 2, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('2006', '水控存款', '2006', 0, 0, 2, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('220201', '批量销户应付款', '220201', 0, 0, 2, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('6201', '营业外支出', '6201', 0, 0, 1, null, null)",
+                        "insert into T_INNERACC (ACCNO, ACCNAME, SUBJNO, YDAYBAL, BALANCE,
+                            BALFLAG, LASTTRANSDATE, LASTACCDATE)
+                            values ('6202', '商户提成支出', '6202', 0, 0, 1, null, null)"
+                        ]
+    },
+    {
+        "name": "T_SUBSYSTEM",
+        "action": "truncate",
+        "desc": "子系统表",
+        "src_sql": "SELECT SYSTEM_ID,SYSTEM_NAME,SYSTEM_TYPE,AREA,SERVER_ID,MAC_ADDR,IP,
+                    PORT, '' CARDVERNO,INIT_KEY,DYNA_KEY,SYNCH_TIME,
+                    (case when STATE=1 then 1
+                          when state=2 then 1
+                          when state=3 then 2
+                          when state=4 then 3
+                          else  4 end) runstatus ,
+                    (case when STATE=6 then 2 else 1 end) status ,
+                    '' OPENDATE,'' CLOSEDATE,'' REMARK FROM
+                    YKT_CUR.T_PIF_SUBSYSTEM",
+        "dest_column": "SYSID, SYSNAME, SYSTYPE, AREACODE, SERVERID, MACADDR, IP, PORT,
+                        CARDVERNO, INITKEY, DYNAKEY, SYNCTIME, RUNSTATUS, STATUS,
+                        OPENDATE, CLOSEDATE, REMARK"
+    },
+    {
+        "name": "T_SHOPACC",
+        "action": "truncate",
+        "desc": "商户账户表",
+        "src_sql": "select (case when a.account_id is null then ''
+                                 else '2'||substr(a.account_id,8) end) accno,
+                    s.shop_id shopid,a.cut_name,'2004',a.password,a.current_state,
+                    0 ydaybal,a.cur_bala,a.cur_freebala,a.cur_frozebala,'' lasttransdate,
+                    '' lastaccdate, a.open_date,a.close_date from
+                    ykt_cur.t_aif_account a left join ykt_cur.t_cif_shop s on
+                    a.customer_id=s.cut_id where a.act_type=2 and s.shop_id is not null
+                    order by s.shop_id",
+        "dest_column": "ACCNO, SHOPID, ACCNAME, SUBJNO, ACCPWD, STATUS, YDAYBAL, BALANCE,
+                        AVAILBAL, FROZEBAL, LASTTRANSDATE, LASTACCDATE, OPENDATE, CLOSEDATE",
+        "post_exec": ["update t_syskey set keyval=(select max(to_number(substr(accno,2)))
+                        from t_shopacc) where keycode='SHOPACCNO'"]
+    },
+    {
+        "name": "T_SPECIALTY",
+        "action": "truncate",
+        "desc": "专业信息表",
+        "src_sql": "SELECT S_CODE,S_NAME,1 USEFLAG,'' LASTSAVED FROM
+                    YKT_CUR.T_CIF_SPECIALITY WHERE S_CODE <>'' and s_code<> '0'",
+        "dest_column": "SPECIALTYCODE, SPECIALTYNAME, USEFLAG, LASTSAVED"
+    },
+    {
+        "name": "T_SHOPPOS",
+        "action": "truncate",
+        "desc": "商户设备对应表",
+        "src_sql": "select t1.id,t1.device_id,t2.devphy999_id,t1.shop_id,t1.end_time,
+                    t1.comments,t1.begin_date,t1.end_date,1,'','' from
+                    ykt_cur.t_cif_shop_pos t1,ykt_cur.t_pif_device t2
+                    where t1.device_id=t2.device_id",
+        "dest_column": "ID, DEVICEID, DEVPHYID, SHOPID, ENDTIME, REMARK, STARTDATE,
+                        ENDDATE, STATUS, OPERCODE, LASTSAVED"
+    },
+    {
+        "name": "T_RPTACCBAL",
+        "action": "truncate",
+        "desc": "账户结算表",
+        "src_sql": "select :tx_date,'2001',(case when a.account_id is null then ''
+                                                   else '1'||substr(a.account_id,8) end) accno,
+                    2 ,cur_bala from ykt_cur.t_aif_account a where act_type=1
+                    union all
+                    select :tx_date,'2004',(case when a.account_id is null then ''
+                                                   else '2'||substr(a.account_id,8) end) accno,
+                    2,cur_bala  from ykt_cur.t_aif_account a where act_type=2
+                    union all
+                    select :tx_date, (case when a.account_id='1011' then '1001'
+                                             when a.account_id='1021' then '1002'
+                                             when a.account_id='1031' then '112101'
+                                             when a.account_id='1041' then '112102'
+                                             when a.account_id='1051' then '112103'
+                                             when a.account_id='2051' then '2002'
+                                             when a.account_id='2061' then '220299'
+                                             when a.account_id='2071' then '2203'
+                                             when a.account_id='5011' then '6002'
+                                             when a.account_id='5021' then '6005'
+                                             when a.account_id='5051' then '6003'
+                                             when a.account_id='5041' then '6006'
+                                             when a.account_id='5071' then '6001'
+                                             else rtrim(a.account_id) end) subno,
+                        (case when a.account_id='1011' then '1001'
+                              when a.account_id='1021' then '1002'
+                              when a.account_id='1031' then '112101'
+                              when a.account_id='1041' then '112102'
+                              when a.account_id='1051' then '112103'
+                              when a.account_id='2051' then '2002'
+                              when a.account_id='2061' then '220299'
+                              when a.account_id='2071' then '2203'
+                              when a.account_id='5011' then '6002'
+                              when a.account_id='5021' then '6005'
+                              when a.account_id='5051' then '6003'
+                              when a.account_id='5041' then '6006'
+                              when a.account_id='5071' then '6001'
+                              else rtrim(a.account_id) end) account_id,
+                        (case when substr(a.account_id,1,1)='1' then 1 else 2 end) flag,
+                        cur_bala from ykt_cur.t_aif_account a where act_type=7 and
+                        a.account_id not in ('1122','2031','2041','1071')",
+        "dest_column": "ACCDATE, SUBJNO, ACCNO, BALFLAG, BALANCE",
+        "remark": "导入内部账户报表,并更新错误的借贷标志",
+        "post_exec": ["update t_rptaccbal set balance=abs(balance),balflag=1
+                        where accno in ('6201','6202')",
+                        // "insert into t_rptaccbal(accdate,subjno,accno,balflag,balance)
+                        //     select :tx_date,s.subjno,s.subjno,
+                        //         (case when substr(s.subjno,1,1)='1' then 1
+                        //               else 2 end) flag1,0
+                        //     from t_subject s left join t_rptaccbal b on
+                        //     (s.subjno=b.subjno and b.accdate=:tx_date)
+                        //     where b.accdate is null",
+                        "insert into t_rptaccbal(accdate,subjno,accno,balflag,balance)
+                            select :tx_date,s.subjno,s.subjno,2,0 from t_rptsubjbal s
+                            where s.subjno in (2001,2004,2202,2006,220201,6004)
+                            and s.accdate=:tx_date",
+                        "insert into t_rptaccbal(accdate,subjno,accno,balflag,balance)
+                            select :tx_date,s.subjno,s.subjno,1,0 from t_rptsubjbal s
+                            where s.subjno in (6201,6202)
+                            and s.accdate=:tx_date",
+                        "update t_rptaccbal set balance=balance+60 where
+                        accno='1' || substr('1000000000111416', 8) and accdate=:tx_date"]
+    },
+    {
+        "name": "T_RPTSUBJBAL",
+        "action": "truncate",
+        "desc": "科目结算表",
+        "src_sql": "select :tx_date,'2001',2 ,sum(cur_bala),0,0,2,sum(cur_bala)
+                    from ykt_cur.t_aif_account a where act_type=1
+                    union all
+                    select :tx_date,'2004',2,sum(cur_bala),0,0,2,sum(cur_bala)
+                    from ykt_cur.t_aif_account a where act_type=2
+                    union all select :tx_date,
+                                (case when a.account_id='1011' then '1001'
+                                      when a.account_id='1021' then '1002'
+                                      when a.account_id='1031' then '112101'
+                                      when a.account_id='1041' then '112102'
+                                      when a.account_id='1051' then '112103'
+                                      when a.account_id='2051' then '2002'
+                                      when a.account_id='2061' then '220299'
+                                      when a.account_id='2071' then '2203'
+                                      when a.account_id='5011' then '6002'
+                                      when a.account_id='5021' then '6005'
+                                      when a.account_id='5051' then '6003'
+                                      when a.account_id='5041' then '6006'
+                                      when a.account_id='5071' then '6001'
+                                      when a.account_id='2081' then '2202'
+                                      else rtrim(a.account_id) end) subno,
+                                (case when substr(a.account_id,1,1)='1' then 1
+                                      else 2 end) flag1,
+                                sum(cur_bala),0,0,
+                                (case when substr(a.account_id,1,1)='1' then 1
+                                      else 2 end) flag2,sum(cur_bala) from
+                                ykt_cur.t_aif_account a where act_type=7 and
+                                a.account_id not in ('1122','2031','2041','1071')
+                                group by a.account_id",
+        "dest_column": "ACCDATE, SUBJNO, BEGINBALFLAG, BEGINBAL, DRAMT, CRAMT,
+                        ENDBALFLAG, ENDBAL",
+        "post_exec" : ["insert into t_rptsubjbal(ACCDATE, SUBJNO, BEGINBALFLAG, BEGINBAL,
+                        DRAMT, CRAMT, ENDBALFLAG, ENDBAL)
+                        select :tx_date, subjno, 1,
+                            (select sum(beginbal) from t_rptsubjbal t where accdate=:tx_date
+                                and t.subjno like s.subjno || '__'),
+                            0,0,1,
+                            (select sum(endbal) from t_rptsubjbal t where accdate=:tx_date
+                                and t.subjno like s.subjno || '__') from t_subject s
+                        where subjno in ('1121','2202')",
+                        "update t_rptsubjbal set beginbalflag=1,endbalflag=1 where
+                        subjno in ('6201','6202')",
+                        "update t_rptsubjbal set beginbal=beginbal+60, endbal=endbal+60
+                        where accdate=:tx_date and subjno='2001'",
+                        "delete from t_servicelog"],
+        "remark": "生成结算科目数据"
+    },
+    {
+        "name": "T_OPERATOR",
+        "action": "truncate",
+        "desc": "操作员表",
+        "src_sql": "select rownum,oper_code,3,100,oper_name, phone, mobile,
+                    email, addr, pwd, 1 from ykt_cur.t_pif_operator where
+                    oper_code not in ('system')",
+        "dest_column": "OPERID, OPERCODE, OPERTYPE, BRANCHNO, OPERNAME, TEL, MOBILE,
+                        EMAIL, ADDR, OPERPWD, STATUS",
+        "post_exec": ["update t_syskey set keyval=(select max(operid) from t_operator)
+                        where keycode='OPERID'"]
+    },
+    {
+        "name": "T_SUBSIDY",
+        "action": "truncate",
+        "desc": "补助数据表",
+        "src_sql": "select t.BATCH_NO,SEQNO,c.STUEMP_NO,CUST_NO,SUBSIDY_NO,CARD_NO,SUMMARY,
+                    BROKER_NAME,BROKER_ID,BILL_TYPE,BILL_NO,AMOUNT,SUBSIDYTYPE,1,'','',
+                    TX_DATE,TX_TIME,GET_DATE,GET_TIME,STATUS,0,'',OPER_CODE FROM
+                    YKT_CUR.t_tif_subsidy t,ykt_cur.t_cif_customer c where t.cust_no=c.cut_id",
+        "dest_column": "BATCHNO,SEQNO,STUEMPNO,CUSTID,SUBSIDYNO,CARDNO,SUMMARY,BROKERNAME,
+                        BROKERIDNO,PAYTYPE,VOUCHERNO,AMOUNT,SUBSIDYTYPE,SUBSIDYMODE,IMPDATE,
+                        IMPTIME,PUTDATE,PUTTIME,GETDATE,GETTIME,STATUS,CHECKFLAG,
+                        ERRMSG,OPERCODE"
+    },
+    {
+        "name": "T_PHOTOLIMIT",
+        "action": "truncate",
+        "desc": "拍照系统用户表",
+        "src_sql": "select oper_code,oper_name, password, oper_limit, enabled,
+                    substr(begin_date,1, 8), substr(end_date,1,6), memo from t_cif_photolimit",
+        "dest_column": "OPERCODE, OPERNAME, OPERPWD , OPERLIMIT , ENABLED , BEGINDATE ,
+                        ENDDATE , REMARK "
+    },
+    {
+        "name": "T_TIF_REPORT_ACTIVE",
+        "action": "truncate",
+        "desc": "历史结算总表",
+        "src_sql": "select BALANCE_DATE, SERI_TYPE, TRADE_NUMBER, TRADE_AMT, ACC_ADDNUM,
+                    ACC_AMT, SHOP_ADDNUM, SHOP_AMT, DEP_AMT, EARN_AMT, MNG_AMT,
+                    COST_AMT, ENSURE_AMT, BANK_AMT, CASH_AMT, OPERATOR_CODE, DATA_SIGN,
+                    RESERVE1, RESERVE2, CHECK_ADD_AMT, OUTLAY_ADD_AMT, DOWN_SUBSIDY_AMT,
+                    UP_SUBSIDY_AMT from ykt_cur.T_TIF_REPORT_ACTIVE",
+        "dest_column": "BALANCE_DATE, SERI_TYPE, TRADE_NUMBER, TRADE_AMT, ACC_ADDNUM,
+                        ACC_AMT, SHOP_ADDNUM, SHOP_AMT, DEP_AMT, EARN_AMT, MNG_AMT,
+                        COST_AMT, ENSURE_AMT, BANK_AMT, CASH_AMT, OPERATOR_CODE, DATA_SIGN,
+                        RESERVE1, RESERVE2, CHECK_ADD_AMT, OUTLAY_ADD_AMT, DOWN_SUBSIDY_AMT,
+                        UP_SUBSIDY_AMT"
+    },
+    {
+        "name": "T_TIF_REPORT_DEPTTRADE",
+        "action": "truncate",
+        "desc": "T_TIF_REPORT_DEPTTRADE",
+        "src_sql": "select BALANCE_DATE, DEPT_CODE, DEPT_NAME, SERI_TYPE, FEE_TYPE,
+                            OUTORIN, OPCOUNT, OPFEE, RESERVE_1, RESERVE_2 from
+                            ykt_cur.T_TIF_REPORT_DEPTTRADE",
+        "dest_column": "BALANCE_DATE, DEPT_CODE, DEPT_NAME, SERI_TYPE, FEE_TYPE, OUTORIN,
+                        OPCOUNT, OPFEE, RESERVE_1, RESERVE_2"
+    },
+    {
+        "name": "T_TIF_REPORT_ERRACC",
+        "action": "truncate",
+        "desc": "T_TIF_REPORT_ERRACC",
+        "src_sql": "select BALANCE_DATE, ACCOUNT_ID, CUT_NAME, STUEMP_NO, TYPE_ID,
+                    DEPT_NAME, LAST_BALA, CUR_BALA, TRADE_AMT, DIFF_BALA, DATA_SIGN,
+                    RESERVE1, RESERVE2 from ykt_cur.T_TIF_REPORT_ERRACC",
+        "dest_column": "BALANCE_DATE, ACCOUNT_ID, CUT_NAME, STUEMP_NO, TYPE_ID,
+                        DEPT_NAME, LAST_BALA, CUR_BALA, TRADE_AMT, DIFF_BALA, DATA_SIGN,
+                        RESERVE1, RESERVE2"
+    },
+    {
+        "name": "T_TIF_REPORT_OPER",
+        "action": "truncate",
+        "desc": "T_TIF_REPORT_OPER",
+        "src_sql": "select BALANCE_DATE,(case when OPERATOR_CODE='' then '999999'
+                                              else OPERATOR_CODE end),
+                    SERI_TYPE, MAINDEVICE_ID, DEVICE_ID, HAPPEN_NUM, HAPPEN_AMT,
+                    MNG_AMT, ENSURE_AMT, COST_AMT, DEP_AMT, EARN_AMT, BANK_AMT,
+                    CASH_AMT, DATA_SIGN, RESERVE1, RESERVE2, ACC_ADD_AMT, SHP_ADD_AMT,
+                    CHECK_AMT, OUTLAY_AMT, DOWN_SUBSIDY_AMT, UP_SUBSIDY_AMT from
+                    ykt_cur.T_TIF_REPORT_OPER",
+        "dest_column": "BALANCE_DATE, OPERATOR_CODE, SERI_TYPE, MAINDEVICE_ID,
+                        DEVICE_ID, HAPPEN_NUM, HAPPEN_AMT, MNG_AMT, ENSURE_AMT, COST_AMT,
+                        DEP_AMT, EARN_AMT, BANK_AMT, CASH_AMT, DATA_SIGN, RESERVE1,
+                        RESERVE2, ACC_ADD_AMT, SHP_ADD_AMT, CHECK_AMT, OUTLAY_AMT,
+                        DOWN_SUBSIDY_AMT, UP_SUBSIDY_AMT"
+    },
+    {
+        "name": "T_TIF_REPORT_SHOP_BALANCE",
+        "action": "truncate",
+        "desc": "T_TIF_REPORT_SHOP_BALANCE",
+        "src_sql": "select BALANCE_DATE, SHOP_ID, SHOP_NAME, DEPT_ID, TRADE_NUM,
+                    TRADE_AMT, MNG_AMT, TOTAL_AMT, DATA_SIGN, RESERVE1, RESERVE2 from
+                    ykt_cur.T_TIF_REPORT_SHOP_BALANCE",
+        "dest_column": "BALANCE_DATE, SHOP_ID, SHOP_NAME, DEPT_ID, TRADE_NUM, TRADE_AMT,
+                        MNG_AMT, TOTAL_AMT, DATA_SIGN, RESERVE1, RESERVE2"
+    },
+    {
+        "name": "T_TIF_REPORT_SHOP_BALANCE_01",
+        "action": "truncate",
+        "desc": "T_TIF_REPORT_SHOP_BALANCE_01",
+        "src_sql": "select BALANCE_DATE, SHOP_ID, SHOP_NAME, DEPT_ID, OPERATE_DATE, TRADE_NUM,
+                    TRADE_AMT, MNG_AMT, TOTAL_AMT, DATA_SIGN, RESERVE1, RESERVE2,OUTORIN,
+                    SERI_TYPE from
+                    ykt_cur.T_TIF_REPORT_SHOP_BALANCE_01",
+        "dest_column": "BALANCE_DATE, SHOP_ID, SHOP_NAME, DEPT_ID, OPERATE_DATE, TRADE_NUM,
+                       TRADE_AMT, MNG_AMT, TOTAL_AMT, DATA_SIGN, RESERVE1, RESERVE2,OUTORIN,
+                       SERI_TYPE"
+    },
+    {
+        "name": "T_TIF_REPORT_OPER_STATISTICS",
+        "action": "truncate",
+        "desc": "T_TIF_REPORT_OPER_STATISTICS",
+        "src_sql": "select BALANCE_DATE, OPER_CODE, SERIAL_TYPE, SUBNO, OTHER_SUBNO,
+                    DEBIT_AMT,DEBIT_COUNT,CREDIT_AMT,CREDIT_COUNT,SURPLUS from
+                    ykt_cur.T_TIF_REPORT_OPER_STATISTICS",
+        "dest_column": "BALANCE_DATE, OPER_CODE, SERIAL_TYPE, SUBNO, OTHER_SUBNO,
+                        DEBIT_AMT,DEBIT_COUNT,CREDIT_AMT,CREDIT_COUNT,SURPLUS"
+    }
\ No newline at end of file