- Home
- Categorie
- Gaming, Hardware e Software
- Software (Windows - Linux - Apple) & Applicazioni
- Aiuto per comando mysql da bash
-
Aiuto per comando mysql da bash
devo richiamare da bash un file.sql che ha come contenuto i comandi:
"DROP TABLE IF EXISTS articles;
CREATE TABLEarticles
( ........
........ ecc"qual'è il modo più corretto per richiamarlo da bash?
mysql -hlocalhost -unome -ppass my_db -e"????????"
pensavo di usare LOAD DATAIN FILE ma quanto ho capito serve per caricare i dati in una tabella, quindi tutt'altra funzione
-
trovato !!
mysql -hlocalhost -unome -ppass my_db < /path/al/file.sql
semplice no !!!
adesso il problema è fare un ciclo all'interno del file.sh
che mi legga i file in una cartella e per ogni file mi faccia lo stesso comando sqlbho!!!
se volessi rendere variabili il nome del db e il file.sql così andrebbe bene??
DB=my_db
FILE=/path/al/file.sql #lo devo mettere frà virgolette??mysql -hlocalhost -unome -ppass $DB < $FILE
-
@ramon said:
adesso il problema è fare un ciclo all'interno del file.sh
che mi legga i file in una cartella e per ogni file mi faccia lo stesso comando sqlbho!!!
se volessi rendere variabili il nome del db e il file.sql così andrebbe bene??
DB=my_db
FILE=/path/al/file.sql #lo devo mettere frà virgolette??mysql -hlocalhost -unome -ppass $DB < $FILE
Se devi farlo per ogni file .sql della cartella ed eseguirlo al suo interno
#!/bin/bash DB=my_db for FILE in *.sql; do mysql -hlocalhost -unome -ppass $DB < $FILE done
-
più o meno avevo risolto così
DBS=mysql -hlocalhost -unome -ppass -e"show databases"
for db in $DBS ;
do
mysql -hlocalhost -unome -ppass $db < /path/al/$db.sql
doneperò vogio andare oltre:
voglio che per ogni db apra una cartella, con lo stesso nome del db, e legga tutti i file.sql che ci trova e che vanno inseriti in quel dbcome lo vedi come metodo ??
-
@ramon said:
però vogio andare oltre:
voglio che per ogni db apra una cartella, con lo stesso nome del db, e legga tutti i file.sql che ci trova e che vanno inseriti in quel dbcome lo vedi come metodo ??
i nomi dei db dove dovrebbe prenderli?
-
@Nicola said:
i nomi dei db dove dovrebbe prenderli?
DBS=mysql -hlocalhost -unome -ppass -e"show databases"
comando SHOW DATABASES
-
@ramon said:
DBS=mysql -hlocalhost -unome -ppass -e"show databases"
comando SHOW DATABASES
Ah, ma così dovresti lavorarti un po' l'output che ricevi, prima di ripassarlo al ciclo, perchè avresti una roba in ascii del genere assegnata a $DBS
+------------+ | Database | +------------+ | db1 | | db2 | | db3 | +------------+
-
@Nicola said:
Ah, ma così dovresti lavorarti un po' l'output che ricevi, prima di ripassarlo al ciclo, perchè avresti una roba in ascii del genere assegnata a $DBS
e no allora non và
-
più o meno qualcosa del genere
?cerca le cartelle
CARTELLE=array ( nomi cartelle )for folder = $CARTELLE
do
?leggi i nomi dei file.sql in ogni $folder
FILEDB=array ( file.sql )
for filesql = $FILEDB
do
mysql -hlocalhost -unome -ppass $folder < $filesql
done
doneexit