在Golang中执行SQL Plus命令

在Golang中执行SQL Plus命令,go,sqlplus,Go,Sqlplus,我需要使用sql Plus在Golang中运行一个.sql文件,它将创建一个名为tb\u data\u 20180502104923的表和文件。我将.sql脚本命名为tb\u data\u 20180502104923.sql,内容如下: set headsep off set pagesize 0 set trimspool on set trimout on create table tb_data_20180502104923 as select * from tb_data; spool

我需要使用sql Plus在Golang中运行一个.sql文件,它将创建一个名为
tb\u data\u 20180502104923
的表和文件。我将.sql脚本命名为
tb\u data\u 20180502104923.sql
,内容如下:

set headsep off
set pagesize 0
set trimspool on
set trimout on
create table tb_data_20180502104923
as
select * from tb_data;
spool tb_data_20180502104923.txt
SELECT data_id||';'||data_content FROM tb_data_20180502104923;
spool off
我曾用
os/exec
这样做:

func main(){
    cmd := exec.Command("sqlplus -s admin/123#@172.10.1.211:1521/orcl < tb_data_20180502104923.sql")

    var out, stderr bytes.Buffer

    cmd.Stdout = &out
    cmd.Stderr = &stderr

    err := cmd.Run()
    if err != nil {
        log.Fatalf("Error executing query. Command Output: %+v\n: %+v, %v", out.String(), stderr.String(), err)
    }
}
它不返回任何内容,并且tabel和file
tb_data\u 20180502104923
都没有创建


我哪里做错了,或者在Golang中不可能使用Sql Plus?如果不可能,有没有其他方法来满足我的需要?

好吧,不管怎样,看起来这只是我对如何使用
os/exec
的理解不够

所以,如果有人不知道如何使用它,这里我如何解决我自己的问题

我改变

cmd := exec.Command("sqlplus", "-s", "admin/123#@172.10.1.211:1521/orcl", "< tb_data_20180502104923.sql")
cmd:=exec.Command(“sqlplus”、“-s”、“admin/123#@172.10.1.211:1521/orcl”、“

cmd:=exec.Command(“bash”、“-c”、“sqlplus-s admin/123#@172.10.1.211:1521/orcl
第一个参数
bash
是要使用的Shell类型

第二个参数
-c
bash
的参数

第三个参数是我想要执行的
命令


如果我错了,请纠正我。

运行命令
sqlplus user/pass@connect@scriptname
在go中,尝试执行命令(“sqlplus”,“user/pass@connect“,“@scriptname”)
谢谢你的评论,但我已经解决了我自己的问题。只是我理解力差。我已经在下面发布了这个问题的解决方案
cmd := exec.Command("sqlplus", "-s", "admin/123#@172.10.1.211:1521/orcl", "< tb_data_20180502104923.sql")
cmd := exec.Command("sqlplus", "-s", "admin/123#@172.10.1.211:1521/orcl", "< tb_data_20180502104923.sql")
cmd := exec.Command("bash", "-c", "sqlplus -s admin/123#@172.10.1.211:1521/orcl < tb_data_20180502104923.sql")