Problemas na Migração - Tabelas com Acento e Cedilha
Pessoal,
Estou tentando migrar um banco de dados em Oracle para Firebird. Para a minha surpresa, a maioria das tabelas possuem nomes com acento e/ou cedilha. Na hora de criar o banco, funciona na mais plena tranqüilidade. Mas o problema é na hora de trabalhar com o banco. O Firebird sempre mostra o seguinte erro:
Por não saber se o CARACTER SET tem alguma influência também nos nomes de tabelas, como tem nos valores dos campos char e varchar. Tentei criar o banco utilizando o CHARACTER SET Win1252 e com o ISO8859_1. Das duas formas o erro persiste, inclusive quando é criado com o charset definido por omissão.
Como faço para resolver o problema sem ter que renomear as tabelas? Quais foram as suas experiências com esse tipo de problema? Imagino que vários de vocês passaram por isso.
[]s,
Rafael Cabral
Estou tentando migrar um banco de dados em Oracle para Firebird. Para a minha surpresa, a maioria das tabelas possuem nomes com acento e/ou cedilha. Na hora de criar o banco, funciona na mais plena tranqüilidade. Mas o problema é na hora de trabalhar com o banco. O Firebird sempre mostra o seguinte erro:
aritmethic exception, numeric overflow or string truncation. Cannot transliterate character between character sets.
Por não saber se o CARACTER SET tem alguma influência também nos nomes de tabelas, como tem nos valores dos campos char e varchar. Tentei criar o banco utilizando o CHARACTER SET Win1252 e com o ISO8859_1. Das duas formas o erro persiste, inclusive quando é criado com o charset definido por omissão.
Como faço para resolver o problema sem ter que renomear as tabelas? Quais foram as suas experiências com esse tipo de problema? Imagino que vários de vocês passaram por isso.
[]s,
Rafael Cabral
Rafael Miguel
Curtidas 0
Respostas
Titanius
19/04/2005
tive esse problema, o que solucionoufoi eu pegar um firebid com o collated_ptbr, aih ele aceita os acentos... no firebase, tem ele...
[]s
[]s
GOSTEI 0
Rafael Miguel
19/04/2005
Olá Titanius. Muito obrigado pela resposta.
No meu caso foi diferente. Fiz uns testes aqui e consegui criar as tabelas com acentuação e cedilha. Mas só consegui isso SEM definir o CHARACTER SET default.
O que tive que fazer em cada campo varchar q fosse criado definir o CHARACTER SET pra ele. Dá muito mais trabalho, mas vale a pena.
Mas ainda há limitações com acentos. Exemplo:
Se eu criar uma tabela chamada MÁQUINA ou DEFINIÇÃO. Ele aceita tranquilamente.
Mas se eu criar tabelas como MÁQUINA_RECURSO ou DEFINIÇÃO_USUÁRIO. Aí já dá problema em conexões ODBC. Daí renomeando para MÁQUINARECURSO ou DEFINIÇÃOUSUÁRIO. Ou então MAQUINA_RECURSO ou DEF_USER. Ou seja, para ODBC ou coloco acentuação ou coloco algum outro caracter especial q não seja alfanumérico.
O problema acima não é do banco e sim do ODBC. Então continua valendo a criação de banco de dados com acentos SEM CARACTER SET.
Eu concordo com a prática de evitar acentos e cedilhas em nome de banco de dados. O problema é q a pessoa q criou o sistema há vários anos está muito mal acostumada com o Oracle q permite essas coisas. Então para a migração preferiria tentar uma solução em q o SBDB aceitasse acentos e cedilhas do q mudar 38 tabelas e depois mexer na aplicação inteira. Isso levaria meses e não é isso q queremos.
Muito obrigado mais uma vez pela resposta. (Ops acho que escrevi demais).
No meu caso foi diferente. Fiz uns testes aqui e consegui criar as tabelas com acentuação e cedilha. Mas só consegui isso SEM definir o CHARACTER SET default.
O que tive que fazer em cada campo varchar q fosse criado definir o CHARACTER SET pra ele. Dá muito mais trabalho, mas vale a pena.
Mas ainda há limitações com acentos. Exemplo:
Se eu criar uma tabela chamada MÁQUINA ou DEFINIÇÃO. Ele aceita tranquilamente.
Mas se eu criar tabelas como MÁQUINA_RECURSO ou DEFINIÇÃO_USUÁRIO. Aí já dá problema em conexões ODBC. Daí renomeando para MÁQUINARECURSO ou DEFINIÇÃOUSUÁRIO. Ou então MAQUINA_RECURSO ou DEF_USER. Ou seja, para ODBC ou coloco acentuação ou coloco algum outro caracter especial q não seja alfanumérico.
O problema acima não é do banco e sim do ODBC. Então continua valendo a criação de banco de dados com acentos SEM CARACTER SET.
Eu concordo com a prática de evitar acentos e cedilhas em nome de banco de dados. O problema é q a pessoa q criou o sistema há vários anos está muito mal acostumada com o Oracle q permite essas coisas. Então para a migração preferiria tentar uma solução em q o SBDB aceitasse acentos e cedilhas do q mudar 38 tabelas e depois mexer na aplicação inteira. Isso levaria meses e não é isso q queremos.
Muito obrigado mais uma vez pela resposta. (Ops acho que escrevi demais).
GOSTEI 0
Titanius
19/04/2005
Realmente, uma dica, é nunca usar acentuacao pra nomes de tabelas.. eu nao uso acentuacao e nem _, pois pode dar pau dependendo do componente de conexao..
[]s
[]s
GOSTEI 0
Rafael Miguel
19/04/2005
Titanius.
Sou totalmente contra a prática de criar tabelas com acentuação. Por isso q tive q procurar por um solução do q ficar fazendo manutenção na aplicação cujo banco tem 38 tabelas. Mesmo assim tive q mudar o nome de 7 tabelas. Mas melhor mudar 7 q mudar 38 :o
Valeuz mais uma vez,
Rafael Cabral
Sou totalmente contra a prática de criar tabelas com acentuação. Por isso q tive q procurar por um solução do q ficar fazendo manutenção na aplicação cujo banco tem 38 tabelas. Mesmo assim tive q mudar o nome de 7 tabelas. Mas melhor mudar 7 q mudar 38 :o
Valeuz mais uma vez,
Rafael Cabral
GOSTEI 0
Titanius
19/04/2005
realmente :D
GOSTEI 0