Importar arquivos sql usando xargs

3

Eu tenho um número de arquivos sql para importar. Para um único arquivo eu uso o seguinte comando:

mysql -u root -p dbname < db.sql

É possível usar o xargs para importar todos os arquivos em massa? algo como: ls *.sql | xargs ....

Eu sei que o mysqlimport é a solução, mas eu quero saber se é possível com xargs ou não.

    
por Omid 23.10.2012 / 19:25

3 respostas

4

xargs é adequado para transformar entrada em parâmetros de linha de comando. Mas como mysql não aceita o parâmetro de nome de arquivo de script SQL, xargs não é útil nesse caso.

Este é um uso útil de cat :

cat *.sql | mysql -u root -p dbname

De qualquer forma, sua tentativa de usar ls dessa forma leva ao famoso Por que você não deve analisar a saída de ls (1) artigo.

    
por 23.10.2012 / 19:32
1

Se os seus arquivos sql forem independentes um do outro, pode ser mais rápido importá-los em paralelo:

parallel -j10 sql mysql://root:passwd@/dbname '<' {} ::: *.sql

Assista ao vídeo de introdução no GNU Parallel para saber mais: link

    
por 03.01.2013 / 11:50
0

Este comando carregará todos os arquivos sql na pasta atual, fazendo 8 em paralelo e removerá cada arquivo se for carregado com sucesso:

find . -type f -name "*.sql" -print0 | xargs -0 -n1 -P8 sh -c 'cat $0 | mysql -A -u<redacted> -p<redacted> -h<redacted> dbname && rm $0'

(Eu não reivindico que esta é a melhor maneira de carregar arquivos sql, mas satisfaz a questão de usar xargs para arquivos de importação em massa)

    
por 16.04.2018 / 16:25