2016-07-10 1 views
1

Привет, ребята, почти 3AM здесь, в Лондоне, и я проигрываю этот бой. Я пытаюсь сбросить базу данных mysql в файл sql. Он отлично работает из командной строки, но не тогда, когда я пытаюсь сделать то же самое из golang (используя библиотеку os/exec). Я пробовал почти все, что могла придумать моя глупая голова ... Он отлично работает с командой echo, но полностью игнорирует mysqldump. Не могли бы вы указать мне в правильном направлении?Golang os/exec для вывода данных mysql в файл

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) 
} 

ответ

1

использование этого (отдельный Args):

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) 
    } 

} 
+0

Как сбросить только одну таблицу MySQL используя эту команду exceution –

+0

как ее использовать? –

0

cmd := exec.Command("mysqldump", "-P3306", "-hhost", "-uuser", "-ppassword", "database_name" "table_name") Просто добавьте имя таблицы ш

+0

Здравствуйте, похоже, что ответ неполный - пожалуйста, исправьте, заполнив. – Chaithanya

Смежные вопросы