如果你需要批量導(dǎo)出MySQL中多個(gè)表的建表腳本,那么使用go語(yǔ)言編寫一個(gè)工具將非常方便。下面是一個(gè)示例:
package main
import (
"fmt"
"log"
"github.com/go-sql-driver/mysql"
)
func main() {
config := mysql.Config{
User: "root",
Passwd: "password",
Net: "tcp",
Addr: "127.0.0.1:3306",
DBName: "test",
}
db, err := createConnection(config)
if err != nil {
log.Fatalf("create connection failed: %v", err)
}
tables := []string{"table1", "table2", "table3"}
for _, tableName := range tables {
script, err := getCreateTableScript(tableName, db)
if err != nil {
log.Fatalf("get create table script failed: %v", err)
}
fmt.Printf("Table %s create script:\n%s\n", tableName, script)
}
}
func createConnection(config mysql.Config) (*mysql.Conn, error) {
dsn := config.FormatDSN()
db, err := mysql.Connect(nil)
if err != nil {
return nil, err
}
err = db.Ping()
if err != nil {
return nil, err
}
return db, nil
}
func getCreateTableScript(tableName string, db *mysql.Conn) (string, error) {
rows, err := db.Query(fmt.Sprintf("SHOW CREATE TABLE %s", tableName))
if err != nil {
return "", err
}
defer rows.Close()
var tableNameVar, createTableScriptVar string
for rows.Next() {
err = rows.Scan(&tableNameVar, &createTableScriptVar)
if err != nil {
return "", err
}
}
return createTableScriptVar, nil
}
這個(gè)示例中我們使用了go語(yǔ)言自帶的mysql驅(qū)動(dòng)來(lái)連接MySQL,然后通過(guò)查詢SHOW CREATE TABLE語(yǔ)句來(lái)獲取每個(gè)表的建表腳本。最后我們將每個(gè)表的建表腳本輸出到控制臺(tái)。你可以根據(jù)自己的需求來(lái)修改這個(gè)示例。
下一篇Go搭配mysql