Dentre várias, programo numa linguagem XBase (Opus) que funciona amarrada a um banco de dados chamado OpenBase.
Eventualmente, passo muitas informações desse banco de dados para o MySQL (5.0.27), usando comandos executados pelo MySQL (por scripts) e esses dados são manipulados, consultados depois por aplicações web,
delphi, etc.
Agora, preciso, também, fazer com que o MySQL, simplesmente, grave em um arquivo texto o resultado de uma query... parecia simples, mas o comando \T não cria o arquivo texto desejado quando executado a partir de um script
Há alguma coisa especial a definir para a gravação ser realizada?
Exemplo que dá certo, usando o próprio prompt do MySQL:
dev_pmsd> mysql -ubergo -p(xxxxx) -h10.3.2.1
mysql> use acme
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> \T //users/pmsd/spool/pmsd/info.txt
Logging to file '//users/pmsd/spool/pmsd/info.txt'
mysql> select dam_numero, data_pg, valor_pago from inscritos limit 5;
+------------+------------+------------+
| dam_numero | data_pg | valor_pago |
+------------+------------+------------+
| 270000025 | 2008-08-01 | 60.00 |
| 270000033 | 2008-08-01 | 60.00 |
| 270000041 | 2008-08-01 | 30.00 |
| 270000050 | 2008-08-01 | 40.00 |
| 270000068 | 2008-08-01 | 50.00 |
+------------+------------+------------+
5 rows in set (0.01 sec)
mysql> \t
Outfile disabled.
mysql> exit
Bye
dev_pmsd => cat //users/pmsd/spool/pmsd/info.txt
mysql> select dam_numero, data_pg, valor_pago from inscritos limit 5;
+------------+------------+------------+
| dam_numero | data_pg | valor_pago |
+------------+------------+------------+
| 270000025 | 2008-08-01 | 60.00 |
| 270000033 | 2008-08-01 | 60.00 |
| 270000041 | 2008-08-01 | 30.00 |
| 270000050 | 2008-08-01 | 40.00 |
| 270000068 | 2008-08-01 | 50.00 |
+------------+------------+------------+
5 rows in set (0.01 sec)
mysql> \t
dev_pmsd>
E o que não funciona:
Código "as-clipper" no programa:
cr = chr(13)
lf = chr(10)
c_MySQLCatalog = 'acme'
c_MySQLUsuario = 'bergo'
c_MySQLSenha = '(xxxx)'
c_MySQLHost = '10.3.2.1'
n_has2del = 0
c_sql_file = '//users/pmsd/spool/pmsd/cmd2my.sql'
c_result_file = '//users/pmsd/spool/pmsd/info.txt'
if file(c_result_file)
delete file c_result_file
endif
if file(c_result_file)
@ 10, 00 say 'Não foi possível excluir '+c_result_file+'!'
wait
endif
c_cmd_content = 'use '+c_MySQLCatalog+cr+lf+;
'\T //users/pmsd/spool/pmsd/info.txt'+cr+lf+;
'select dam_numero, data_pg, valor_pago from inscritos limit 5;'+cr+lf+;
'\t'+cr+lf
set printer to 'cat > '+c_sql_file
set print on
? c_cmd_content
set print off
set printer to
cCmdLine = 'mysql -u'+c_MySQLUsuario+' '+;
'-p'+c_MySQLSenha+' '+;
'-h'+c_MySQLHost+' -e "\. '+c_sql_file+'"'
run cCmdLine
Quit
O que acontece na prática ao executar o script é que o MySQL abre e executa o programa (o script definido na linha de comando no parâmetro -e) exceto o comando \T
Pergunta
paulobergo
Bom dia!
Dentre várias, programo numa linguagem XBase (Opus) que funciona amarrada a um banco de dados chamado OpenBase.
Eventualmente, passo muitas informações desse banco de dados para o MySQL (5.0.27), usando comandos executados pelo MySQL (por scripts) e esses dados são manipulados, consultados depois por aplicações web,
delphi, etc.
Agora, preciso, também, fazer com que o MySQL, simplesmente, grave em um arquivo texto o resultado de uma query... parecia simples, mas o comando \T não cria o arquivo texto desejado quando executado a partir de um script
Há alguma coisa especial a definir para a gravação ser realizada?
Exemplo que dá certo, usando o próprio prompt do MySQL:
E o que não funciona: Código "as-clipper" no programa:O que acontece na prática ao executar o script é que o MySQL abre e executa o programa (o script definido na linha de comando no parâmetro -e) exceto o comando \T
Alguma idéia de como fazê-lo funcionar?
Grato por qualquer colaboração!!!
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados