2010-08-29 12 views

Respuesta

15

Puede canalizar el SQL volcado a través de sed y hacer que extraiga la base de datos por usted. Algo así como:

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

Los dos sed comandos:

  1. Sólo imprime las líneas que coincidan entre las CREATE DATABASE líneas (incluyendo tanto CREATE DATABASE líneas), y
  2. Eliminar el últimoCREATE DATABASE línea desde el salida ya que no queremos que mysqld cree una segunda base de datos.

Si su volcado no contiene las líneas CREATE DATABASE, también puede coincidir contra los USE líneas.

+0

en una sola línea y con las opciones '-u' y' -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

Puede usar la línea de comando mysql --una opción de base de datos.

Por supuesto, tenga cuidado al hacer esto.

También puede usar un mysql dumpsplitter.

+0

Intenté esto, pero siempre recibí el error "ERROR 1049" (42000): base de datos desconocida 'redmine' ". La documentación indica: "Esto es útil para omitir actualizaciones de otras bases de datos en el registro binario". Este no es un registro binario (creo) por lo que no funcionará. –

+1

Encontré un informe de error interesante relacionado con esta característica: http://bugs.mysql.com/bug.php?id=40477 –

+1

@ThePixelDeveloper: primero debe existir una base de datos vacía, luego funciona. –

Cuestiones relacionadas