PDA

Ver la Versión Completa : Crear Base de Datos con .bat


advancexz
30-01-2009, 01:25:09
Soy yo pidiendo ayuda otra vez...

Quiero que un archivo .bat me ejecute la instruccion CREATE DATABASE basedatos, pero solo puedo llegar hasta el momento donde me conecto a MySQL, ya que dentro no puedo enviar nada con el .bat (o no se como) lo que esta despues de conectarme a MySQL no se manda hasta despues de salir de mysql


@echo off

echo Creando Base de Datos...
echo Creating Data Base...

"C:\Program Files\empresa\MySQL\MySQL Server 5.0\bin\mysql.exe" -uroot -proot

CREATE DATABASE basedatos;

echo Por favor espere...
echo Please wait...

"C:\Program Files\empresa\MySQL\MySQL Server 5.0\bin\mysql.exe" -uroot -proot empresa< "C:\Program Files\empresa\MySQL\MySQL Server 5.0\data\empresa.sql"

pause



sera posible que pueda mandarle CREATE DATABASE basedatos con un .BAT al batch de mysql?? alguna idea?? :confused:

droguerman
30-01-2009, 02:00:05
Yo lo veo tan sencillo como añadir la linea create database empresa a tu script y accediendo inicialmente a la base de datos mysql:


"C:\Program Files\empresa\MySQL\MySQL Server 5.0\bin\mysql.exe" -uroot -proot mysql<"C:\Program Files\empresa\MySQL\MySQL Server 5.0\data\empresa.sql"

advancexz
30-01-2009, 02:13:49
es que es justamente lo que no puedo hacer, en el codigo que escribi, con esta linea entro a mysql:

"C:\Program Files\empresa\MySQL\MySQL Server 5.0\bin\mysql.exe" -uroot -proot

y despues le mando la instruccion para crear la base de datos

CREATE DATABASE basedatos;

pero esta ultima linea no aparece sino hasta que me salgo de mysql. Saben como mandarle comandos a mysql desde un archivo .bat??

creo que me ekivoke al decir create database basedatos y abajo poner empresa, en realidad me referia a la misma base de datos

droguerman
30-01-2009, 15:58:14
hmm creo que no entiendo vamos por partes:
Creas un archivo llamado script.sql con el siguiente contenido:

Drop Database Empresa if exists;
Create Database Empresa;
use Empresa;
CREATE TABLE tablaPersona
(
codigo char(5)
);

Fijate que puse el create database dentro del script, no dentro del archivo bat

luego dices a sql que ejecute ese script de la siguiente forma:


mysql -uroot -proot mysql < script.sql

advancexz
30-01-2009, 20:37:14
hice lo que me dices, de crear la base de datos en el script y no en el bat ( tienes toda la razón, porque no se me ocurrió :P), pero al ejecutar el script con esta sentencia:

mysql -proot -uroot mysql < script.sql

me manda error de sintaxis, y pues no lo quiere hacer. Cabe señalar que exactamente lo hago de la siguiente manera:

"c:\program files\empresa\sistema\MySQL\MySQL Server 5.0\bin\mysql" -proot -uroot mysql < script.sql

pongo toda la ruta, porque yo hice el instalador de mysql y todo jala bien, excepto que no me funciona el comando mysql en cmd y debo indicarle toda la ruta, pero bueno, ese no es problema, mi duda es si cuando me dijiste que indicara como base de datos a la de mysql (lo que puse en negritas) no habra algun problema... o quizas tenga que indicar algo en especial...

el codigo del script comienza asi:

DROP DATABASE EMPRESA IF EXISTS;
CREATE DATABASE EMPRESA;
USE EMPRESA;

y sea cual sea la primer linea me manda error de sintaxis en la primer linea...

gracias...

droguerman
30-01-2009, 23:09:27
Quizás sea por el drop database, no recuerdo, puede que me haya olvidado la sintaxis. Sin embargo es raro que cualquier linea que pongas te bota error. Intenta con un archivo más pequeño (que haga un SELECT, un USE o algo asi) y luego ve añadiendo poco a pocos tus lineas para encontrar la causa.

Lo de poner mysql era para tener la seguridad que siempre inicia con la base de datos pero creo que puedes quitar ese argumento.

advancexz
30-01-2009, 23:12:27
ya encontré el error, de verdad que estuvo muuuuuy raro...

me estaba marcando error de sintaxis, porque en el comienzo del script habia un caracter oculto, solo visible en ms-dos y que pude observar una vez que abri el archivo en WORD, ya que extrañamente me preguntaba en que formato queria abrirlo, y si lo hacia en UTF8 no podia ver ese caracter, asi que lo abri en modo MSDOS en el WORD y lo pude ver, el caracter oculto era este: ╗ o algo parecido, pero el caso es que estaba al principio y en notepad no podia verlo.

muchas gracias por contestar, me sacaron de un apuro...