usando cat no arquivo de entrada

1

Eu tenho um arquivo criado com o mysqldump que é 11GB. Eu preciso usar o comando "mysql" para importá-lo em um banco de dados, mas preciso adicionar:

USE db1;

no topo. Levaria uma eternidade para reescrever o arquivo. Existe uma maneira de concatenar outro arquivo no início do redirecionamento de entrada para enganá-lo e vê-lo como um único arquivo?

text.txt conteúdo:

USE db1;

sql_out.sql conteúdo:

data from mysqldump using the --skip-add-drop-table and --no-create-info options

comando tentado:

mysql --host=<host> --user=<user> --password=<pwd> < echo $(cat text.txt sql_out.sql)

Quando faço isso, obtenho:

echo: No such file or directory

Se eu tentar sem o eco, recebo:

$(cat text.txt sql_out.sql): ambiguous redirect

Existe uma maneira de fazer isso?

    
por raphael75 21.03.2017 / 20:26

2 respostas

3

Você pode canalizar:

cat text.txt sql_out.sql | mysql --host=...

Como alternativa, para evitar a necessidade de criar um novo arquivo:

(echo "USE db1;"; cat sql_out.sql) | mysql --host=...
    
por 21.03.2017 / 20:30
1

Você pode usar a substituição de processo aqui:

mysql --host=<host> --user=<user> --password=<pwd> < <(cat text.txt sql_out.sql)

a sintaxe <(...) trata um processo como um arquivo

    
por 21.03.2017 / 20:30