gpt4 book ai didi

go - os/exec 将 mysql 数据转储到文件

转载 作者:IT王子 更新时间:2023-10-29 02:13:44 28 4
gpt4 key购买 nike

大家好,伦敦已经凌晨 3 点了,我正在输掉这场战斗。我正在尝试将 mysql 数据库转储到 sql 文件中。它在命令行中工作正常,但当我尝试从 Go 中执行相同操作时(使用 os/exec 库)却不行。我已经尝试了几乎所有我愚蠢的脑袋能想出的东西……它与 echo 命令一起工作正常,但它完全忽略了 mysqldump。你能给我指出正确的方向吗?

package main

import (
"os/exec"
"log"
"bufio"
"os"
"io"
)

func main() {
// This Doesn't
// cmd := exec.Command("mysqldump", "-P3306 -hhost -uuser -ppassword database_name")
// This Works
cmd := exec.Command("echo", "Hello World bla bla")
stdout, err := cmd.StdoutPipe()
if err != nil {
log.Fatal(err)
}

outfile, err := os.Create("./out.sql")
if err != nil {
log.Fatal(err)
}
defer outfile.Close()

// start the command after having set up the pipe
if err := cmd.Start(); err != nil {
log.Fatal(err)
}

// read command's stdout line by line
in := bufio.NewWriter(outfile)
defer in.Flush()

io.Copy(outfile, stdout)
}

最佳答案

使用这个(单独的参数):

cmd := exec.Command("mysqldump", "-P3306", "-hhost", "-uuser", "-ppassword", "database_name")

我的测试示例代码:

package main

import (
"io/ioutil"
"log"
"os/exec"
)

func main() {
cmd := exec.Command("mysqldump", "-P3306", "-hhost", "-uuser", "-ppassword", "database_name")
stdout, err := cmd.StdoutPipe()
if err != nil {
log.Fatal(err)
}

if err := cmd.Start(); err != nil {
log.Fatal(err)
}

bytes, err := ioutil.ReadAll(stdout)
if err != nil {
log.Fatal(err)
}
err = ioutil.WriteFile("./out.sql", bytes, 0644)
if err != nil {
panic(err)
}

}

关于go - os/exec 将 mysql 数据转储到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38287922/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com