Script executeren (MySQL): verschil tussen versies
(Een tussenliggende versie door dezelfde gebruiker niet weergegeven) | |||
Regel 44: | Regel 44: | ||
mysql --execute "show databases;" | mysql --execute "show databases;" | ||
+ | |||
+ | == Meerdere strings executeren vanaf bash == | ||
+ | |||
+ | Het kan! [https://www.shellhacks.com/mysql-run-query-bash-script-linux-command-line/]. Voorbeeld: | ||
+ | |||
+ | <pre> | ||
+ | echo "Create labels..." | ||
+ | sql="use dwh; call kbo_label('"$site_db_name"');" | ||
+ | mysql <<EOF | ||
+ | $sql | ||
+ | EOF | ||
+ | </pre> | ||
+ | |||
+ | Hier wordt alles tot aan het keyword "EOF" geëxecuteerd. | ||
== Zie ook == | == Zie ook == | ||
Regel 54: | Regel 68: | ||
* https://dev.mysql.com/doc/refman/5.7/en/command-line-options.html | * https://dev.mysql.com/doc/refman/5.7/en/command-line-options.html | ||
* https://dev.mysql.com/doc/refman/8.0/en/mysql-batch-commands.html | * https://dev.mysql.com/doc/refman/8.0/en/mysql-batch-commands.html | ||
+ | * https://www.shellhacks.com/mysql-run-query-bash-script-linux-command-line/ |
Huidige versie van 8 jun 2019 om 11:05
De mysql-client is bedoeld voor interactief gebruik, maar je kunt er ook scripts (bestanden met SQL-commando's) mee uitvoeren.
Gebruikelijke syntaxis:
mysql -u username -ppassword -h db_name < script_file
of
mysql -u username -ppassword -e executiestring
Als je een .my.cnf
-bestand aanmaakt (zie Installatie MySQL), dan kun je de credentials achterwege laten (heel erg prettig!):
mysql db_name < script_file
Indien het eerste statement in het bestand een use db_name
-commando is, kan het ook zo:
mysql < script_file
Je kunt scriptbestanden ook executeren vanuit mysql:
source bestandsnaam
of
\. bestandsnaam
Feedback
Er zijn in ieder geval twee manieren om feedback te krijgen tijdens executie van een script.
Verbose
De eerste methode is middels --verbose
. Bv.:
mysql < script-010-dwh-main.sql --verbose
Select-statements
De tweede methode is, door select-statements op te nemen in het script. Net als debuggen dus. Waarschijnlijk Niet altijd even practisch.
Direct strings executeren
Bv.:
mysql --execute "show databases;"
Meerdere strings executeren vanaf bash
Het kan! [1]. Voorbeeld:
echo "Create labels..." sql="use dwh; call kbo_label('"$site_db_name"');" mysql <<EOF $sql EOF
Hier wordt alles tot aan het keyword "EOF" geëxecuteerd.