mysql之使用exec.Command在Go中使用Mysql脚本
lhb25
阅读:273
2025-06-02 22:19:02
评论:0
我正在尝试执行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
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



