Normalmente, mysqldump genera estas sentencias para cada tabla de la base de datos:
Código SQL
[-]
DROP TABLE IF EXISTS `tabla`;
CREATE TABLE `tabla` (...);
INSERT INTO `tabla` VALUES (...),(...),...
Al poner la opción --skip-opt, mysqldump omite la sentencia DROP y por tanto, al restaurar falla al intentar crear una tabla ya existente. Desafortunadamente, aunque mysql cuenta con la sentencia
Código SQL
[-]
CREATE TABLE IF NOT EXISTS `tabla` ...
mysqldump no la incluye. Así que, si vas a restaurar sobre una base ya existente, no coloques --skip-opt
Ahora, en MSDOS (y otros sistemas), en una línea como:
Código:
mysql.exe -uusuario -ppassword bd < respaldo.sql
respaldo.sql no es un parámetro del comando (como sí lo son -uusuario y -ppassword) sino una redirección de la entrada estándar; en lugar del teclado, la entrada se proporciona por un archivo de texto. Esto lo digo para indicarte que no puedes usar redirecciones así en ShellExecute, como lo estás intentando.
En
este mensaje puedes ver una manera de usar ShellExecute y mysql.exe para restaurar un respaldo creado con mysqldump.
LineComment Saludos