EXECUTAR QUERY NO MYSQL - PERGUNTA DE LEIGO
Precisarei instalar meus sistemas em clientes (e hoje ainda vou ter que fazer isso), e precisarei instalar na máquina do cliente o MySQL.
Até aÃ, sem problemas. Instalo. Só que eu não queria ter que instalar o software FRONT dele no cliente, mas eu preciso criar 1 banco de dados e as tabelas deste banco lá no cliente.
No meu FRONT aquà em desenvolvimento, eu criei já o .SQL de criação de toda a estrutura, mas como EXECUTAR este .SQL no MySQL sem ser pelo front??? Alguém poderia me dar um HELP????
O MySQL possui uma ferramenta de administração do tipo MS-DOS (linha de comando).
Se não me engano, você encontra a ferramenta no diretório \mysql\bin.
Exemplo:
mysql -u root -p
password: *****
create database tecla
use tecla
create table teste...
O meu problema seria como dar o seguinte comando (mais ou menos assim).
EXECUTAR QUERY.SQL (QUERY.SQL é o arquivo que eu tenho onde está todo o SCRIPT de geração de tabelas e banco de dados)
LOAD DATA INFILE [ô]query.sql[ô] INTO TABLE banco.tabela;
LOAD DATA INFILE Syntax
Como vou abrir este arquivo lá, é isso que não estou entendendo/sacando como fazer (ser um LEIGO nessa MELECA é foda).
IMAGINEMOS que este arquivo está no app.path do meu exe ([Ô]C:\\SISTEMA[Ô]), como vou executá-lo dentro dos comando do MySQL e exe rodar este SCRIPT todo????
Eu ainda qdo desenvolvia para vb6, desenvolvi duas formas de fazer isso
A primeira , dentro do meu próprio sistema eu tinha um instalador que verificava se era a primeira execução.
A segunda , um arquivo .bat, que era executado antes da instalação.
Esse arquivo .bat, setava o diretorio do mysql, executava os comandos gerando os bancos.
Abaixo o arquivo .bat.
Citação:@ECHO OFF
@REM Set dir variables. Use ~1 format in win2k
SET basedir=C:\BACKUP
SET workdir=c:\BACKUP
SET mysqldir=C:\MySQL\MySQL Server 6.0.2\bin
SET NOMEBANCO=TEST
REM SET gzipdir=c:\PROGRA~1\GnuWin32\bin
SET mysqlpassword=SENHA_USER_ROOT
SET mysqluser=root
@REM Change to mysqldir
CD %mysqldir%;
@REM dump database. This is all one line
@rem mysqldump -u %mysqluser% -p%mysqlpassword% --compact NOMEBANCO movprodsaida vendas -t -n >%workdir%\backup.sql
mysql -u %mysqluser% -p%mysqlpassword% %NOMEBANCO% <%workdir%\PERICIA.SQL
@REM Change to workdir
CD %workdir%
@REM Zip up database
@rem %gzipdir%\gzip.exe backup.sql
@REM Move to random file name
@REM MOVE backup.sql.gz backup.%random%.gz
@REM FTP file to repository
@REM FTP -n -s:%basedir%\ftp-commands.txt
@REM Remove old backup files
@REM del backup.sql
@REM del backup.*.gz
@REM Change back to base dir
@CD %basedir%
Detalhe :
Com o seu script pericia.sql, ocorreram erros no meu servidor, pode ser configurações, testei com o meu script e funfou legal.
segue exemplo do meu script.
Citação:#
CREATE DATABASE 'beauty' /*!40100 DEFAULT CHARACTER SET latin1 */;
#
DROP TABLE IF EXISTS 'beauty'.'abrefechaterminal';
#
CREATE TABLE 'beauty'.'abrefechaterminal' (
'idAbertura' int(11) DEFAULT NULL,
'CheckOut' varchar(20) DEFAULT NULL,
'Turno' int(10) NOT NULL,
'AbreData' datetime NOT NULL,
'AbreHora' datetime NOT NULL,
'FechaHora' datetime DEFAULT NULL,
'FechaData' datetime DEFAULT NULL,
'Troco' decimal(19,4) DEFAULT NULL,
'RestoTroco' decimal(19,4) DEFAULT NULL,
'Operador' varchar(20) DEFAULT NULL,
'vlrDinheiro' varchar(20) DEFAULT NULL,
'vlrMoeda' varchar(20) DEFAULT NULL,
'vlrConvenio' varchar(20) DEFAULT NULL,
'vlrCarteira' varchar(20) DEFAULT NULL,
'vlrCartao' varchar(20) DEFAULT NULL,
'vlrCheque' varchar(20) DEFAULT NULL,
'vlrTotGeral' decimal(11,0) DEFAULT NULL,
'Gerente' varchar(20) DEFAULT NULL,
'EntraTotal' decimal(19,4) DEFAULT NULL,
'SaidaTotal' decimal(19,4) DEFAULT NULL,
'Saldo' decimal(19,4) DEFAULT NULL,
'StatusCX' varchar(20) NOT NULL,
'Atualizacao' datetime DEFAULT NULL,
PRIMARY KEY ('Turno','AbreData','AbreHora'),
KEY 'AbreData' ('AbreData'),
KEY 'ind_cod_aberto' ('Turno','StatusCX'),
KEY 'ind_cod_dt_aberto' ('Turno','AbreData','StatusCX'),
KEY 'ind_principal' ('Turno','AbreData','AbreHora')
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
#
#
Este SCRIPT no meu servidor MySQL (local) está funcionando perfeitamente....
Se eu pegar este SCRIPT e rodá-lo pelo FRONT, ele cria tudo perfeitamente....
O meu problema é, se ELE vai conseguir ser executado DIRETAMENTE pelo MySQL, e como é que eu faço para EXECUTÃ-LO??? Isso que não faço nem idéia de como fazer...........
Será que terei que instalar o FRONT no micro do cliente, para poder rodar este script e depois desinstalar????
Após o serivodor ser instalado você deverá executar o arquivo teste.bat.
Atente-se as variaveis do arquivo .bat, onde :
SET basedir=C:\BACKUP > local onde se encontra o arquivo .bat e o script
SET workdir=c:\BACKUP > local onde se encontra o arquivo .bat e o script
SET mysqldir=C:\MySQL\MySQL Server 6.0.2\bin > Local onde esta instalado o seu MYSQL
Se estes parametros estiverem corretos, e seu servidor estiver rodando normalmente basta executar o teste.bat que ele irá executar o conteudo do scritp diretamente no banco
IMPORTANTE : Sempre que é feito uma nova instalação do MySQL ele instala um banco chamado TEST, não é a toa, eu utilizo esta base para fazer as importações utilizando essa base como referencia.
NÃO Hà NECESSIDADE DE INSTALAR O FRONT.
Faça um teste no seu servidor.
Obrigado pelas ajudas, mas minha INCAPACIDADE de fazer isso está sendo absurda e estou ficando já PUTO DA VIDA com isso.....
Vou APELAR e quando precisar instalar nos clientes, como terei que fazer isso REMOTAMENTE, instalo a PORRA do front, executo e depois apago aquela merda.....
Meu SACO já se encheu.......