Me pregunto si hay alguna forma en mysqldump para agregar la opción de crear tabla apropiada [SI NO EXISTE]. ¿Algunas ideas?Crear tabla si no existe desde mysqldump
Respuesta
De acuerdo con one source, mysqldump no cuenta con esta opción.
Puede utilizar la opción --force
al importar el archivo de volcado, donde MySQL ignorará los errores generados por los intentos de crear tablas duplicadas. Sin embargo, tenga en cuenta que con este método, también se ignorarían otros errores.
De lo contrario, puede ejecutar su archivo de volcado a través de un script que reemplazará todas las ocurrencias de CREATE TABLE
con CREATE TABLE IF NOT EXISTS
.
No es lo que podría querer, pero con --add-drop-table
cada CREATE se antepone con la declaración correspondiente DROP TABLE.
De lo contrario, me gustaría una simple búsqueda/reemplazo (por ejemplo, con sed
).
intentar usar esta en su archivo SQL:
sed 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' <file-path>
o para guardar
sed -i 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' <file-path>
no es ideal, pero funciona: P
Usando sed
como se describe por las obras @Pawel bien. Sin embargo, es posible que no le guste la idea de canalizar sus datos a través de más posibles fuentes de error de las absolutamente necesarias. En este caso se pueden utilizar dos depósitos separados:
- primeros volcado contiene definiciones de tabla (
--no-data --skip-add-drop-table
) - segundo volcado con los datos solamente (
--no-create-info --skip-add-drop-table
)
Hay algunas otras cosas para cuidar de sin embargo (por ejemplo, desencadenadores). Verifique el manual para más detalles.
crea un script bash con esto ... asegúrate de hacerlo ejecutable. (chmod 0777 dump.sh)
volcado.sh
#!/bin/bash
name=$HOSTNAME
name+="-"
name+=$(date +"%Y-%m-%d.%H:%M")
name+=".sql"
echo $name;
mysqldump --replace --skip-add-drop-table --skip-comments izon -p > "$name"
sed -i 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' "$name"
para buscar y reemplazar el texto En Windows 7 Uso de PowerShell
Abierto de comandos y utilice el comando a continuación
powershell -Command "(gc E:\map\map_2017.sql) -replace 'CREATE TABLE', 'CREATE TABLE IF NOT EXISTS' | Out-File E:\map\map_replaced.sql"
primer parámetro es la ruta de archivo
El segundo param es 'f cadena ind'
tercer parámetro es 'reemplazar cadena'
Este comando creará un nuevo archivo con el texto reemplazado. Eliminar el comando comenzando desde '|' (tubería) si desea reemplazar y guardar contenidos en el mismo archivo.
La sed será mucho más rápido sin la 'g' (global) en su extremo:
por ejemplo:
mysqldump -e <database> | sed 's/^CREATE TABLE /CREATE TABLE IF NOT EXISTS /' > <database>.sql
Si desea que el SQL final funcione, debe eliminar DROP TABLE IF EXIST también. –
La salida del comando es la combinación de DROP y CREATE, por lo que debe eliminar la declaración DROP y cambiar la instrucción CREATE para formar una salida válida (lógica):
mysqldump --no-data -u root <schema> | sed 's/^CREATE TABLE /CREATE TABLE IF NOT EXISTS /'| sed 's/^DROP TABLE IF EXISTS /-- DROP TABLE IF EXISTS /' > <schema>.sql
- 1. Crear si no existe
- 2. MySql - Crear tabla si no existe Otra vez truncar?
- 3. Crear tabla en SQLite solo si ya no existe
- 4. "Crear tabla si no existe": ¿cómo verificar el esquema también?
- 5. Crear una tabla SQLite solo si no existe
- 6. PostgreSQL crean tabla si no existe
- 7. ¿Cómo puedo crear una carpeta, si no existe, desde .vimrc?
- 8. cómo comprobar si la tabla existe y si no existe Crear una tabla en SQL Server 2008
- 9. ignora una tabla con mysqldump?
- 10. Comprobar si existe tabla
- 11. Compruebe si existe tabla
- 12. Crear una carpeta si no existe
- 13. Java FileOutputStream Crear archivo si no existe
- 14. Crear archivo si no existe el archivo
- 15. Crear un archivo solo si no existe
- 16. crear si no existe la vista?
- 17. Agregar al archivo si existe y crear si no
- 18. Crear una cookie si (y sólo si) no existe ya
- 19. Mysqldump más de una tabla?
- 20. Crear si una entrada no existe, de lo contrario ¿actualizar?
- 21. cómo decir crear un procedimiento si no existe en MySQL
- 22. No existe la tabla 'MyDjango.django_admin_log'
- 23. MySql Insertar tabla si no existe otra manera actualizar
- 24. Agregue una columna a una tabla, si no existe
- 25. SQL portátil para determinar si existe una tabla o no?
- 26. Cómo encontrar si existe una carpeta en la Bandeja de entrada y crear si no existe
- 27. Eliminar fila si existe tabla SQL
- 28. Comprobar si la tabla existe en C#
- 29. ¿Truncar una tabla SQLite si existe?
- 30. Compruebe si existe una tabla SQL
Esperemos que no haya datos en su base de datos con esa cadena específica en ella. :) – Riedsio
Las probabilidades son bastante improbables. –
Puede reducir los errores expandiendo la coincidencia, '$ sed 's/^ CREAR TABLA foo/CREAR TABLA SI NO EXISTE foo/g'' –