2010-08-29 7 views

risposta

15

È possibile reindirizzare il codice SQL scaricato tramite sed e estrarre il database automaticamente. Qualcosa di simile:

cat mysqldumped.sql | \ 
sed -n -e '/^CREATE DATABASE.*`the_database_you_want`/,/^CREATE DATABASE/ p' | \ 
sed -e '$d' | \ 
mysql 

I due sed comandi:

  1. stampare solo le linee corrispondenti tra i CREATE DATABASE linee (tra cui entrambe le CREATE DATABASE righe), e
  2. Elimina l'ultimaCREATE DATABASE linea dal output dal momento che non vogliamo mysqld creare un secondo database.

Se la discarica non contiene le linee CREATE DATABASE, è anche possibile abbinare contro i USE linee.

+0

In una singola riga e con le opzioni '-u' e' -p': 'cat all-databases.sql | sed -n -e '/^CREATE DATABASE. * \ 'the_database_you_want \' /,/^ CREATE DATABASE/p' | sed -e '$ d' | mysql -u my_username -p' –

27

È possibile utilizzare l'opzione della riga di comando mysql --one-database.

Ovviamente fare attenzione quando si esegue questa operazione.

È inoltre possibile utilizzare uno mysql dumpsplitter.

+0

Ho provato questo, ma ho sempre ricevuto l'errore "ERRORE 1049 (42000): database sconosciuto "redmine" ". La documentazione afferma: "Questo è utile per saltare gli aggiornamenti ad altri database nel registro binario." Questo non è un log binario (credo), quindi non funzionerà. –

+1

Ho trovato un'interessante segnalazione di bug relativa a questa funzione: http://bugs.mysql.com/bug.php?id=40477 –

+1

@ThePixelDeveloper: prima deve esistere un database vuoto, quindi funziona. –

Problemi correlati