cat script.sql - | mysql -p database
Estou tentando encontrar uma maneira de usar um arquivo de entrada para um programa de tal forma que eu também possa usar stdin.
Por exemplo, digamos que eu tenha um script SQL que crie uma tabela. Eu invoco assim:
mysql -p database < script.sql
Isso é ótimo, mas sai do mysql quando o script é concluído. Em vez disso, quero executar outras consultas manualmente sem ter saído do mysql.
Eu sei que tee
pode bifurcar a saída para o terminal (stdout) e para um arquivo, existe uma função reversa que pode ser usada para entrada, ou pelo menos um método que pode ser aplicado à maioria dos comandos Linux / Unix?
Eu gosto da resposta do Stephane para o caso geral, mas aqui está algo mais apropriado para o seu exemplo específico.
Inicie o modo interativo do MySQL e use o comando source
para executar scripts SQL.
$ mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 947
Server version: 5.1.73-1 (Debian)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> source asdf.sql
+------+
| test |
+------+
| test |
+------+
1 row in set (0.00 sec)
mysql> select 'cool';
+------+
| cool |
+------+
| cool |
+------+
1 row in set (0.00 sec)
mysql>
Tags command-line stdin