@@ -84,7 +84,7 @@ func (tb *Table) TableCreate(logDir string, tblName string, ch chan struct{}) {
8484 }
8585 // 判断colDefaultValue的长度,如果len大于0说明就是有非null的默认值,如果len为0说明在源库的默认值就是null
8686 if len ([]rune (colDefaultValue .String )) > 0 {
87- newTable .columnDefault = colDefaultValue .String
87+ newTable .columnDefault = strings . ReplaceAll ( colDefaultValue .String , " \n " , "" )
8888 } else {
8989 newTable .columnDefault = "null"
9090 }
@@ -120,6 +120,8 @@ func (tb *Table) TableCreate(logDir string, tblName string, ch chan struct{}) {
120120 matches := re .FindAllString (newTable .dataType , - 1 )
121121 if matches [0 ] == "TIMESTAMP" { //timestamp类型,才需要加精度值
122122 newTable .destDefault = "default current_timestamp(" + strconv .Itoa (newTable .numericScale ) + ")"
123+ } else {
124+ newTable .destDefault = "default current_timestamp"
123125 }
124126 } else { // 其余默认值类型无需使用单引号包围
125127 newTable .destDefault = fmt .Sprintf ("default %s" , newTable .columnDefault )
@@ -166,17 +168,21 @@ func (tb *Table) TableCreate(logDir string, tblName string, ch chan struct{}) {
166168 }
167169 }
168170 //fmt.Println(createTblSql) // 打印创建表语句
169- // 创建前先删除目标表
170- dropDestTbl := "drop table if exists " + fmt .Sprintf ("`" ) + tblName + fmt .Sprintf ("`" ) + " cascade"
171- if _ , err = destDb .Exec (dropDestTbl ); err != nil {
172- log .Error ("drop table " , tblName , " failed " , err )
173- }
174- // 创建表结构
175- log .Info (fmt .Sprintf ("%v Table total %s create table %s" , time .Now ().Format ("2006-01-02 15:04:05.000000" ), strconv .Itoa (tableCount ), tblName ))
176- if _ , err = destDb .Exec (createTblSql ); err != nil {
177- log .Error ("table " , tblName , " create failed " , err )
178- LogError (logDir , "tableCreateFailed" , createTblSql , err )
179- failedCount += 1
171+ LogOutput (logDir , "createSql" , createTblSql + ";" )
172+ if ! metaData {
173+ // 创建前先删除目标表
174+ dropDestTbl := "drop table if exists " + fmt .Sprintf ("`" ) + tblName + fmt .Sprintf ("`" ) + " cascade"
175+ if _ , err = destDb .Exec (dropDestTbl ); err != nil {
176+ log .Error ("drop table " , tblName , " failed " , err )
177+ }
178+ // 创建表结构
179+ log .Info (fmt .Sprintf ("%v Table total %s create table %s" , time .Now ().Format ("2006-01-02 15:04:05.000000" ), strconv .Itoa (tableCount ), tblName ))
180+
181+ if _ , err = destDb .Exec (createTblSql ); err != nil {
182+ log .Error ("table " , tblName , " create failed " , err )
183+ LogError (logDir , "tableCreateFailed" , createTblSql , err )
184+ failedCount += 1
185+ }
180186 }
181187 <- ch
182188}
@@ -197,12 +203,15 @@ func (tb *Table) IdxCreate(logDir string, tableName string, ch chan struct{}, id
197203 if err := rows .Scan (& destIdxSql ); err != nil {
198204 log .Error (err )
199205 }
206+ LogOutput (logDir , "createSql" , destIdxSql )
200207 destIdxSql = "/* goapp */" + destIdxSql
201208 // 创建目标索引,主键、其余约束
202- if _ , err = destDb .Exec (destIdxSql ); err != nil {
203- log .Error ("index " , destIdxSql , " create index failed " , err )
204- LogError (logDir , "idxCreateFailed" , destIdxSql , err )
205- failedCount += 1
209+ if ! metaData {
210+ if _ , err = destDb .Exec (destIdxSql ); err != nil {
211+ log .Error ("index " , destIdxSql , " create index failed " , err )
212+ LogError (logDir , "idxCreateFailed" , destIdxSql , err )
213+ failedCount += 1
214+ }
206215 }
207216 }
208217 if destIdxSql != "" {
@@ -244,18 +253,26 @@ func (tb *Table) SeqCreate(logDir string) (ret []string) {
244253 // 创建目标数据库该表表的自增列索引
245254 sqlAutoColIdx := "/* goapp */" + "create index ids_" + tableName + "_" + autoColName + "_" + strconv .Itoa (idx ) + " on " + tableName + "(" + autoColName + ")"
246255 log .Info ("[" , idx , "] create auto_increment for table " , tableName )
247- if _ , err = destDb .Exec (sqlAutoColIdx ); err != nil {
248- log .Error (sqlAutoColIdx , " create index autoCol failed " , err )
249- LogError (logDir , "AutoIdxCreateFailed" , sqlAutoColIdx , err )
250- failedCount += 1
256+ LogOutput (logDir , "createSql" , sqlAutoColIdx + ";" )
257+ if ! metaData {
258+ if _ , err = destDb .Exec (sqlAutoColIdx ); err != nil {
259+ log .Error (sqlAutoColIdx , " create index autoCol failed " , err )
260+ LogError (logDir , "AutoIdxCreateFailed" , sqlAutoColIdx , err )
261+ failedCount += 1
262+ }
251263 }
264+
252265 // 更改目标数据库该表的列属性为自增列
253266 sqlModifyAuto := "/* goapp */" + "alter table " + tableName + " modify " + autoColName + " bigint auto_increment"
254- if _ , err = destDb .Exec (sqlModifyAuto ); err != nil {
255- log .Error (sqlModifyAuto , " failed " , err )
256- LogError (logDir , "alterTableFailed" , sqlModifyAuto , err )
257- failedCount += 1
267+ LogOutput (logDir , "createSql" , sqlModifyAuto + ";" )
268+ if ! metaData {
269+ if _ , err = destDb .Exec (sqlModifyAuto ); err != nil {
270+ log .Error (sqlModifyAuto , " failed " , err )
271+ LogError (logDir , "alterTableFailed" , sqlModifyAuto , err )
272+ failedCount += 1
273+ }
258274 }
275+
259276 }
260277 }
261278 }
@@ -283,10 +300,13 @@ func (tb *Table) FkCreate(logDir string) (ret []string) {
283300 }
284301 log .Info ("[" , idx , "] create foreign key for table " , tableName )
285302 sqlStr = "/* goapp */" + sqlStr
286- if _ , err = destDb .Exec (sqlStr ); err != nil {
287- log .Error (sqlStr , " create foreign key failed " , err )
288- LogError (logDir , "FKCreateFailed" , sqlStr , err )
289- failedCount += 1
303+ LogOutput (logDir , "createSql" , sqlStr )
304+ if ! metaData {
305+ if _ , err = destDb .Exec (sqlStr ); err != nil {
306+ log .Error (sqlStr , " create foreign key failed " , err )
307+ LogError (logDir , "FKCreateFailed" , sqlStr , err )
308+ failedCount += 1
309+ }
290310 }
291311 }
292312 endTime := time .Now ()
@@ -322,11 +342,14 @@ func (tb *Table) NormalIdx(logDir string) (ret []string) {
322342 log .Error (err )
323343 }
324344 log .Info ("[" , idx , "] create normal index for table " , tableName )
345+ LogOutput (logDir , "createSql" , createSql + ";" )
325346 createSql = "/* goapp */" + createSql
326- if _ , err = destDb .Exec (createSql ); err != nil {
327- log .Error (createSql , " create normal index failed " , err )
328- LogError (logDir , "NormalIdxCreateFailed" , createSql , err )
329- failedCount += 1
347+ if ! metaData {
348+ if _ , err = destDb .Exec (createSql ); err != nil {
349+ log .Error (createSql , " create normal index failed " , err )
350+ LogError (logDir , "NormalIdxCreateFailed" , createSql , err )
351+ failedCount += 1
352+ }
330353 }
331354 }
332355
@@ -355,10 +378,13 @@ func (tb *Table) CommentCreate(logDir string) (ret []string) {
355378 }
356379 if len (createSql ) > 0 { // 如果有normal-index,就通过dbms_metadata获取该normal-index的DDL语句
357380 log .Info ("[" , idx , "] create comment for table " , tableName )
358- if _ , err = destDb .Exec (createSql ); err != nil {
359- log .Error (createSql , " create comment failed " , err )
360- LogError (logDir , "CommentCreateFailed" , createSql , err )
361- failedCount += 1
381+ LogOutput (logDir , "createSql" , createSql + ";" )
382+ if ! metaData {
383+ if _ , err = destDb .Exec (createSql ); err != nil {
384+ log .Error (createSql , " create comment failed " , err )
385+ LogError (logDir , "CommentCreateFailed" , createSql , err )
386+ failedCount += 1
387+ }
362388 }
363389 }
364390
@@ -392,17 +418,21 @@ func (tb *Table) ViewCreate(logDir string) (ret []string) {
392418 dbRet = strings .ReplaceAll (dbRet , "--" , "-- -- " )
393419 dbRet = strings .ReplaceAll (dbRet , "\" " , "`" )
394420 dbRet = strings .ReplaceAll (dbRet , "NVL(" , "IFNULL(" )
395- dbRet = strings .ReplaceAll (dbRet , "unistr ('\003 0')" , "0" )
396- dbRet = strings .ReplaceAll (dbRet , "unistr ('\003 1')" , "1" )
397- dbRet = strings .ReplaceAll (dbRet , "unistr ('\003 3')" , "3" )
421+ dbRet = strings .ReplaceAll (dbRet , "UNISTR ('\003 0')" , "0" )
422+ dbRet = strings .ReplaceAll (dbRet , "UNISTR ('\003 1')" , "1" )
423+ dbRet = strings .ReplaceAll (dbRet , "UNISTR ('\003 3')" , "3" )
398424 if len (viewName ) > 0 {
399425 sqlStr := "create or replace view " + viewName + " as " + dbRet
400426 log .Info ("[" , idx , "] create view " , viewName )
401- if _ , err = destDb .Exec (sqlStr ); err != nil {
402- //log.Error(sqlStr, " create view failed ", err)
403- LogError (logDir , "ViewCreateFailed" , sqlStr , err )
404- failedCount += 1
427+ LogOutput (logDir , "createSql" , sqlStr + ";" )
428+ if ! metaData {
429+ if _ , err = destDb .Exec (sqlStr ); err != nil {
430+ //log.Error(sqlStr, " create view failed ", err)
431+ LogError (logDir , "ViewCreateFailed" , sqlStr , err )
432+ failedCount += 1
433+ }
405434 }
435+
406436 }
407437 }
408438 endTime := time .Now ()
0 commit comments