Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Migrações de Bases de Dados.
30-01-2011, 00:03
Mensagem: #11
RE: Migrações de Bases de Dados.
JPedrosa,

Quanto aos CTL files, gostaria que me desses então uma ajuda, por favor.
Abaixo segue um exemplo dos ficheiros de Informix que tenho de importar:

---- EXEMPLO---------------------------------------
1|2009-05-22 17:54:09.000|paulo|lisboa|36|vendedor|
2|2009-05-25 11:13:50.000|pedro|porto|25|professor|
3|2009-05-25 11:24:11.000|ana|faro|33|tenista|
4|2009-05-25 11:26:14.000|rute|evora|29|auxiliar|
5|2009-05-25 11:28:18.000|ines|lisboa|35|enfermeira|
------------------------------------------------------

Obrigado!
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
30-01-2011, 22:34 (Esta mensagem foi modificada pela última vez a: 31-01-2011 13:16 por JPedrosa.)
Mensagem: #12
RE: Migrações de Bases de Dados.
Porra,
esqueci-me de ti rapaz.

Um CTL para ti.
não mexo em datas com os últimos dígitos, nem aqui pude testar, mas diria que o FF3, é o que precisas.
Mandei o exemplo em modo "append", se quiseres em modo replace ... é só apagar o APPEND.

Código:
load data
CHARACTERSET UTF8
infile 'EXEMPLO.idl'
append into table EXEMPLO
fields terminated by "|" optionally enclosed by '"'
TRAILING NULLCOLS(
    ID         
    ,DATA_REGISTO                "TO_DATE(:DATA_REGISTO, 'YYYY-MM-DD HH24:MI:SS.FF3')"
    ,NOME                
    ,CIDADE                
    ,IDADE
    ,PROFISSAO
)

Olha, segue aqui um ficheiro exemplo, que te dá para veres algumas funções possíveis.
É um ctl feito por um colega que eu martelei para reduzir mtos campos e alterar algumas labels.

Os selects funcionam como lookups e são muito úteis para carregar tabelas "filhas", ou para carregar códigos em vez de descrições ou o inverso.

Por exemplo, no que tu forneceste, imagina que tinhas uma tabela àparte que tinha registos tipo TABELA.CODIGO = VEND, TABELA.DESCRICAO = Vendedor
E o teu ficheiro tem a descrição, mas tu queres gravar na tabela o código.
Usas um lookup para isto. espero ter ajudado.

Código:
load data
CHARACTERSET UTF8
infile 'TABELA_EXEMPLO.idl'
append into table TABELA_EXEMPLO
fields terminated by "|" optionally enclosed by '"'
TRAILING NULLCOLS(
    TABELA_EXEMPLO_ID         "MEETING_ATTENDEE_SEQ.NEXTVAL"
    ,CAMPO_TEXTO_1
    ,CAMPO_CODIGO_ID                "PT_FIND_CODIGO_ID(:CAMPO_CODIGO_ID)"
    ,STATUS_CHANGE_DATE         "TO_DATE(:STATUS_CHANGE_DATE, 'YYYY-MM-DD')"
    ,LOCAL_ID
    ,MORADA_TEXTO                "(SELECT line_1_address FROM address WHERE address_id = (SELECT address_id FROM affiliation WHERE affiliation_id = PT_FIND_AFFILIATION_ID(:LOCAL_ID)))"
    ,CITY                        "(SELECT city FROM address WHERE address_id = (SELECT address_id FROM affiliation WHERE affiliation_id = PT_FIND_AFFILIATION_ID(:LOCAL_ID)))"
)

Embora não recomende, isto suporta até carregar para várias tabelas, mas vais-te meter em confusão desnecessária.

Algo que te vai ajudar

Peço imensa desculpa por me ter esquecido, mas ando sempre a mil.

EDIT: Estive a ver aqui exemplos, e o ideal era conseguires tirar do informix sem as fracções de segundo, particularmente se vêm sempre a zero. Vai dar chatisse para importar. É que o Oracle pelo que vi, as fracções de segundos é apenas para a variavel do tipo TimeStamp e não para o Date.

Cumps,
JP
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
31-01-2011, 23:43
Mensagem: #13
RE: Migrações de Bases de Dados.
Obrigado JPedrosa,

Era precisamente isto que precisava. Ou pelo menos é um BOM ponto de partida.

Quanto às datas, realmente vou precisar de usar o datatype TIMESTAMP do Oracle.
Achas que vou ter problemas, estando elas no Informix já com esse formato?

Já agora uma outra questão, um pouco off-topic mas que acaba por estar relacionada. Numta tabela nova (vazia) particionada em Oracle, eu consigo usar o SQL Loader para carregar dados, certo?
Penso que sim, e ainda não o testei, mas penso que é como se se tratasse duma tabela normal, certo?

Obrigado!

Abraço,
Aucrun
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
01-02-2011, 00:02
Mensagem: #14
RE: Migrações de Bases de Dados.
Oi, a gestão das partições é feita pelo motor Oracle, aquando do insert a DB sabe que o destino é uma tabela particionada e invoca as regras de particionamento para colocar no respectivo local.

Podes, no entanto apontar para uma partition, apenas é útil em situações especificas e penso que não seja o teu caso. O bom do Oracle é que podes sempre especificar tu, se não quiseres deixar as coisas "sub-entendidas" Wink

Se fores por aí, toma alguma coisa para te ajudar:
http://download.oracle.com/docs/cd/B1930...#sthref798
http://download.oracle.com/docs/cd/B1930..._modes.htm

Cumps
JP
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
01-02-2011, 00:09
Mensagem: #15
RE: Migrações de Bases de Dados.
Obrigado, mais uma vez.

Sim, em relação às tabelas particionadas, penso mesmo que o que melhor se encaixa no que preciso é mesmo uma partição simples BY RANGE.
No entanto, gostei bastante do que li nas COMPOSITES PARTITIONS. A ideia de fazer uma partição, na qual a mesma se encontra espalhada por diversos Tablespaces pode ser bastante interessante.

Quanto ao SQL Loader, penso que o que me mostraste atrás é mais do que o suficiente para começar a criar os meus CTLs para as mais de 100 importações que tenho de fazer.

Mais uma vez obrigado!

Vou dando feedback.

Aucrun
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
01-02-2011, 00:21
Mensagem: #16
RE: Migrações de Bases de Dados.
De nada.

Amanhã se conseguir insiro o teu txt exemplo numa tabela para um campo do tipo timestamp e digo qualquer coisa.

Uma coisa que não mencionei para trás, mas convém ter atenção:
Os lookups são muito bons para garantir a integridade da DB, eu pessoalmente acho que em tabelas "filhas" devias carregar as FK com lookup à tabela de referência.
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 1 Visitante(s)