gpt4 book ai didi

mysql - 使用exec.Command在Go中使用Mysql脚本

转载 作者:行者123 更新时间:2023-12-01 22:43:06 24 4
gpt4 key购买 nike

我正在尝试执行MySQL查询,该查询将输出作为CSV文件提供给指定目录。

func executeCommand(){
cmd := exec.Command("/usr/local/mysql/bin/mysql", "-e", "-hlocalhost", "-P3131", "-uroot", "-pmyPassword", "dbName", "> /path/to/output/folder/fileName.csv")
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr
err = cmd.Run()
if err != nil {
fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
}
fmt.Println("Result: " + out.String())
}

我收到以下错误:

退出状态1:mysql:[警告]在命令行上使用密码
界面可能不安全。

当我删除输出目录路径时,则没有错误。
但是我需要将生成的输出文件输出到指定目录。

我也尝试用 >替换 source,但是没有运气。
另外,当我在Terminal上运行它时,它可以按预期工作,但是我无法通过Go复制它们。

/ usr / local / mysql / bin / mysql -e“从tableName选择*” -u根-p -h本地主机-P 3131 dbName> /path/to/output/folder/fileName.csv

我尝试在SO上搜索,但找不到任何相关内容。
任何帮助,将不胜感激。

最佳答案

>是用于输出重定向的shell元字符。当您在外壳中运行命令时,外壳会预先准备好命令并通过输入/输出重定向执行特殊操作。它不会将重定向元字符传递给程序。但是,当您使用exec.Command()时,您仅提供要传递给命令的参数。

如果要保存命令的输出,则需要使用cmd.Stdout缓冲区。

另请参阅How to execute Mysql Script in golang using exec.Command

关于mysql - 使用exec.Command在Go中使用Mysql脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59636070/

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