ScriptSQL (?)

14 respostas
Linkel

Galera,
Como eu faço para criar um script SQL (um arquivo texto com extensao *.sql) contendo as informações do meu banco de dados (estrutura e dados)???
O método para criar os comandos SQL padrão ANSI eu já fiz mas não sei como vou gerar o arquivo .sql com todo o texto.
Tipo, quero colocar na minha aplicação a opção de fazer um backup em forma de script SQL, enviar esse script por e-mail e talz…
Alguém sabe como eu devo fazer isso?

Valeu!!

14 Respostas

W

qual banco que vc usa?

no mysql tem o mysqldump que faz isso.

Linkel

Não fera.
Eu uso o PostgreSQL. E até no terminal eu consigo gerar esse script para o meu banco em Postgres via comandos.
Quero criar a minha solução via aplicação (como descrevi no tópico).
E depois, vou até publicar minha aplicação com código aberto para isso com diversas funções de script.
Pra ajudar a comu nas migrações de banco SQL.
Só preciso saber como gerar o arquivo texto .sql. É só isso.

Alguém?

fiaux

Cara, ou você vai fazer algo como o hibernate faz para gerar a tabela, lendo suas classes, ou então vai fazer consultas ao metadados do banco e gerar o .sql, algo assim eu imagino.

Linkel

Mas e quanto a gerar o aquivo .sql???
Quero saber como gerar fisicamente (se é que posso dizer assim) o arquivo de texto *.sql !!!

Será que ninguém vai me entender?

fiaux

Você já respondeu, é um arquivo texto com extensão .sql, ou você estuda aí as classes Writer de arquivo ou procura um código pronto. Depois que você tiver o que escrever no arquivo é só criar ele como arquivo texto com extensão .sql. É isso que você quer saber? Eu não havia entendido mesmo não.

Linkel

Não quis ser grosseiro com você, amigo. Desculpe-me se lhe dei essa impressão.
É que nunca trabalhei com arquivo texto em java e não sabia se podia aproveitar a classe que gera o .txt para gerar o .sql.
Estava lendo sobre essa classe agora mesmo. E surgiu a dúvida se eu definir a extensão .sql o arquivo iria funcionar.
Valeu pela paciência e pela resposta…
Um abraço.

O

Somente como curiosidade: muitas pessoas (principalmente as que só trabalham em ambiente Windows) acham que a extensão do arquivo é que determinam o conteúdo do arquivo. NÃO. Isto apenas é uma convensão. Você pode renomear uma arquivo para qualquer outra extensão que o “tipo” dele continua o mesmo. Este negócio de “associar” um aplicativo a uma extensão é configuração do Windows. No Unix/Linux a checagem do “tipo” de um arquivo é feito pelo “Magic Number”.

fiaux

Sim, é verdade.

Linkel

Bom, então isso quer dizer quer posso colocar na minha classe no lugar de .txt a extensão .sql normalmente?
Vou testar depois.
Eu utilizo linux há um ano, desde que conheci o ambiente de trabalho gnome e senti que poderia abandonar aquela inhaca do Ruinous. Dependendo do arquivo de imagem, por exemplo, consigo mudar o tipo apenas renomeando o arquivo para outra extensão. Achei isso maravilhoso.
Mas será que dessa forma, com meu arquivo .sql, não pode dar problema ao instalar minha aplicação no Ruindous?

Um abraço!

O

Sim. Principalmente que um arquivo .sql é um arquivo contendo apenas texto (caracteres “printaveis”).

Não entendi bem o que você quis dizer com “… consigo mudar o tipo apenas renomeando o arquivo para outra extensão …”. O que eu falei em cima é justamente o contrário: mudar a extensão NÃO muda o “tipo” do arquivo. Se você tem um arquivo em formato JPEG com extensão .jpg e alterar a extensão para .gif o arquivo vai continuar a ser um JPEG. O que o Windows faz é associar extensões a “aplicativos”. Você pode mudar a associação quando quiser. Mas isto não fará com que o arquivo mude de “tipo”.

No Windows, por default, não existe associação entre um arquivo com extensão .sql com nenhum aplicativo. Portanto não seria problema. E como eu afirmei acima, um arquivo .sql é um arquivo texto.

fiaux

A única razão para eu ter falado em arquivo .SQL foi por ter se falado em criar um script sql, por padrão a gente associa arquivo .sql a arquivo de script de banco. E falei de arquivo texto pois o arquivo do script de banco é um arquivo texto.
Sim é verdade que no Windows ele associa extensão a aplicativo, para facilitar. Se você mandar abrir o .sql em um leitor de texto (notepad por exemplo) vai abrir numa boa. Eu aprendi que o arquivo é texto ou binário, extensão é outra história, você pode botar o que quiser.

Linkel

Galera, obrigado pelas dicas.
Não concordo plenamente com o oyama porque mudando o nome do arquivo consigo sim mudar o tipo dele, abstratamente falando, claro.
Ele disse que se eu mudar um arquivo de imagem JPEG para outra extensão vai continuar sendo JPEG. Não sei. Mas no meu SO, Ubuntu, quando renomeio um JPEG para GIF, por exemplo, ele passa a ser enxergado como um GIF, em todos os programas, e pelo próprio sistema.
Mas já entendi quanto ao script *.sql.
Valeu pelas dicas.

O

Linkel:
Não concordo plenamente com o oyama porque mudando o nome do arquivo consigo sim mudar o tipo dele, abstratamente falando, claro.
Ele disse que se eu mudar um arquivo de imagem JPEG para outra extensão vai continuar sendo JPEG. Não sei. Mas no meu SO, Ubuntu, quando renomeio um JPEG para GIF, por exemplo, ele passa a ser enxergado como um GIF, em todos os programas, e pelo próprio sistema.

Bem, vamos a algumas definições:

  • O que eu estou chamando de “tipo” do arquivo é o seu conteúdo e não a forma que um SO/programa externo associa uma extensão a um aplicativo.

Como eu disse anteriormente, esta associação entre aplicativo e extensão de arquivo é uma configuração do seu SO. Você configura isto como quiser. Mesmo extensões “fixas” como .jpg, .gif, .exe, podem ser alterados. É apenas uma convensão. Acho que foi criada para pessoas leigas poderem associar um nome de arquivo a um certo “tipo”.

Com base neste definição, o “tipo” do arquivo NÃO se altera quando se muda a sua extensão. Não existe nenhuma maneira em nenhum SO de só renomeando a extensão de uma arquivo se alterar o seu “tipo” (conteúdo). O que determina, por exemplo, se uma imagem é um JPEG ou um GIF NÃO é a sua extensão mas o seu conteúdo. Faça o seguinte teste no seu Linux:

  • Pegue um arquivo JPEG e execute o comando “file imagem.jpg”. A saída vai ser: “imagem.jpg: JPEG image data, xxxxxxxxx”
  • Renomeie o arquivo: “mv imagem.jpg imagem.gif”
  • Execute novamente o comando file: “file imagem.gif”. A saída vai continuar a mesma.
  • Se fosse um GIF a saída seria: “imagem.gif: GIF image data, xxxxxxxxxx”

Resumindo: o que eu gostaria que fosse entendido: o “tipo” do arquivo NÃO tem nada a ver com extensão do nome deste arquivo. São coisas disjuntas.

Linkel

Aí, fera, oyama, você venceu, rsrsrsrsrs! Se é isso que queria ler.
Fiz o teste que propôs e realmente a saída foi sempre a mesma.
Porém não concordo com você quando diz:

O problema não é pessoas leigas, é convenções de aplicações, como você mesmo sugeriu.
Somos obrigados a seguir a mesmas, quer leigos ou não, não importando o tipo real do arquivo.
Um abraço.

Criado 6 de março de 2008
Ultima resposta 10 de mar. de 2008
Respostas 14
Participantes 4