From 112bfee1c46a183beb4942f3a459aacf33d77d09 Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期五, 06 九月 2019 17:46:54 +0800
Subject: [PATCH] 服务器只能到服务器去拉取数据
---
dbself.go | 49 +++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 41 insertions(+), 8 deletions(-)
diff --git a/dbself.go b/dbself.go
index d793d14..f05cc24 100644
--- a/dbself.go
+++ b/dbself.go
@@ -13,6 +13,8 @@
const (
PersonSqliteDBPath = "~/workspace/gitblit/dbserver/config/testdb.db"
+ DbT_TableName = "dbtables"
+ DBP_TableName = "dbtablepersons"
)
var syncMut sync.Mutex
@@ -103,6 +105,8 @@
func ExecuteSqlByGorm(sqls []string) (bool,error) {
if localDb != nil {
+ localDb.LogMode(false)
+ defer localDb.LogMode(true)
var err error
tx := localDb.Begin()
defer func() {
@@ -112,7 +116,8 @@
}()
for _,sql :=range sqls {
result := tx.Exec(sql)
- if result.Error !=nil {
+ err = result.Error
+ if err !=nil {
return false,result.Error
}
if result.RowsAffected == 0{
@@ -135,10 +140,18 @@
Pk int `json:"pk"`
}
+type DumpSql struct {
+ Sql string `json:"sql"`
+}
+
func ExecuteQueryByGorm(tableNames []string) ([]string, error) {
+ localDb.LogMode(false)
+ defer localDb.LogMode(true)
if tableNames !=nil {
var arr []string
+ var dumpSql []DumpSql
for _,table :=range tableNames {
+ dumpSql = make([]DumpSql, 0)
var tDescArr []TableDesc
tSql := fmt.Sprintf(`PRAGMA table_info("%s")`, table)
err := localDb.Raw(tSql).Scan(&tDescArr).Error
@@ -153,16 +166,36 @@
for _,col :=range tDescArr {
columnNames = append(columnNames, fmt.Sprintf(`'||quote("%s")||'`, col.Name))
}
- tSql = fmt.Sprintf(`SELECT 'INSERT INTO "%s" VALUES(%s)' FROM "%s";`,
- table,
- strings.Join(columnNames, ","),
- table)
- var dumpSqls []string
- err = localDb.Raw(tSql).Scan(&dumpSqls).Error
+ if table == DbT_TableName {
+ tSql = fmt.Sprintf(`SELECT 'INSERT INTO "%s" VALUES(%s)' as sql FROM "%s" where (analyServerId='' or analyServerId is NULL);`,
+ table,
+ strings.Join(columnNames, ","),
+ table)
+ } else if table == DBP_TableName {
+ tSql = fmt.Sprintf(`SELECT 'INSERT INTO "%s" VALUES(%s)' as sql FROM "%s" where tableId in (select id from dbTables where (analyServerId='' or analyServerId is NULL));`,
+ table,
+ strings.Join(columnNames, ","),
+ table)
+ } else {
+ tSql = fmt.Sprintf(`SELECT 'INSERT INTO "%s" VALUES(%s)' as sql FROM "%s";`,
+ table,
+ strings.Join(columnNames, ","),
+ table)
+ }
+
+ fmt.Println("tSql:",tSql)
+
+ err = localDb.Raw(tSql).Scan(&dumpSql).Error
if err !=nil {
return nil,errors.New("dump err")
+ continue
}
- arr = append(arr, dumpSqls...)
+ if len(dumpSql)>0 {
+ for _,d :=range dumpSql {
+ arr = append(arr, d.Sql)
+ }
+ }
+
}
return arr,nil
}
--
Gitblit v1.8.0