- Home
- Categorie
- Gli Off Topic
- Tutti i Software
- Aiuto per comando mysql da bash
- 
							
							
							
							
							
Aiuto per comando mysql da bashdevo 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