Ola, eu tenho uma tabela em meu banco com o campo id auto incremento, mas nessa tabela eu precisaria fazer uma importação de dados via txt, o q eu gostaria é uma forma de desabilitar o auto incremento para fazer a importação, pois quando executo o comando ele esta pegando a sequencia do banco e não os valores do arquivo txt
Se você tem um script com as operações de insert que deseja inserir o mysql vai inserir com os ids que estão nos inserts, mesmo usando o auto-incremento.
Mas você pode desabilitar o auto-incremento usando o alter table, por exemplo:
ALTER TABLE `seu_schema`.`sua_tabela`
CHANGE COLUMN `id` `id` BIGINT(20) NOT NULL '' ;
Dessa forma ele remove da coluna ID a opção de auto-incremento, depois que realizar o processo para adicionar novamente a opção de auto-incremento:
ALTER TABLE `seu_schema`.`sua_tabela`
CHANGE COLUMN `id` `id` BIGINT(20) NOT NULL AUTO_INCREMENT '' ;
O problema que estou usando Hibernate JTA e meu codigo seria dessa forma:
` public void importarArquivo() {
File arquivo = new File(“D:\entidade.txt”);
Integer contador = 0;
try {
try (FileReader leitura = new FileReader(arquivo); BufferedReader ler = new BufferedReader(leitura)) {
while (ler.ready()) {
String linha = ler.readLine();
String coluna[] = linha.split("\|");
contador++;
try {
entidade = new Entidade();
entidade.setIEntidade(Integer.parseInt(coluna[0]));
entidade.setNome(coluna[1]);
dao.alterar(entidade);// salvar(entidade);
} catch (Exception e) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, e);
JsfUtil.addErrorMessage(e, "Erro ao importar a linha: " + contador);
}
System.out.println("linha: " + coluna[0] + " - " + coluna[1]);
}
}
JsfUtil.addSuccessMessage("Arquivo importado com sucesso!");
} catch (IOException ex1) {
System.out.println("Erro lendo arquivo. " + ex1.getLocalizedMessage());
}
}
`
Arquivo:
100|modelo10
101|modelo11
102|modelo12
103|modelo13
Nesse tipo de operação o melhor a fazer é manter a coluna id do banco como auto-incremento e criar uma nova coluna para receber o código que você está inserindo. Então você teria o id do banco e o id que recebeu do arquivo em outra coluna. Nas linhas que já tem inseridas na tabela, você pode replicar os valores das colunas id com esta nova coluna.
Pois é, eu pensei nisso tambem ou em até criar uma forma de controlar o auto incremento manual
Se vc quer controlar manualmente, não crie suas tabelas com a chave do tipo auto-incremento. Para desabilitar o auto-incremento delas basta executar o alter table que te passei.