GNU/Linux >> Znalost Linux >  >> Linux

Jak krmit mysql dotazy z bash

Důvod, proč váš pokus nefungoval, byl < očekává název souboru a vy jste mu dodali řetězec. Museli byste udělat něco jako

echo "YOURQUERYSTRINGHERE">tmpfile
mysql --host=localhost --user=user --password=password dbname <tmpfile

Kenův návrh

 mysql  --host=localhost --user=user --password=password -e "QUERY" dbname

může fungovat, ale pokud se pokusíte ve svém dotazu použít proměnné bash, můžete se dostat do rozporu s rozšířením parametrů. např.

QUERY="select * from $MYTABLE WHERE name=\"[email protected]\";"
mysql --host=localhost --user=user --password=password -e "$QUERY" mydbname

nemusí dělat to, co očekáváte. Jednou z možností je použití

echo "$QUERY"|mysql --host=localhost --user=user --password=password mydbname

který funguje, pokud řetězec dotazu obsahuje příslušné citace. Další možností je dokument „zde“, jak navrhuje dogbane.


Zkuste použít dokument zde:

mysql --host=localhost --user=user --password=password << END

CREATE USER 'testuser'@'localhost' IDENTIFIED BY  'jakdJxct8W';
CREATE DATABASE IF NOT EXISTS 'testuser_dev' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON  'testuser_dev' . * TO  'testuser'@'localhost';
CREATE DATABASE IF NOT EXISTS 'testuser_qa' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON  'testuser_qa' . * TO  'testuser'@'localhost';

END

Případně umístěte všechny příkazy do textového souboru a spusťte jej:

mysql --host=localhost --user=user --password=password < commands.sql

Zkuste to takto:

echo "select 1" | mysql

mysql --batch --silent -e 'SHOW TABLES';

Dávkové a tiché jsou užitečné, pokud plánujete výstup pomocí potrubí


Linux
  1. Jak zkopírovat tabulku z jedné databáze mysql do jiné databáze mysql

  2. Jak můžete odstranit duplikáty z historie bash?

  3. Jak mohu zakázat spuštění MySQL v Linuxu při spuštění nebo při spuštění?

  1. Jak spouštět dotazy MySQL/MariaDB přímo z příkazového řádku Linuxu

  2. Jak vymazat konkrétní příkaz z historie Bash v Linuxu

  3. Jak zjistit, zda jsem v relaci Tmux ze skriptu Bash?

  1. Jak vytvořit pole jedinečných prvků ze řetězce/pole v Bash?

  2. Jak mohu získat jedinečné hodnoty z pole v Bash?

  3. jak získat prvky ze seznamu v bash?