[oracle_br] Re: Copiar campo long utilizando HSODBC
E ** outro ** detalhe, que tal a opção 1. , de usar um programinha que conecte nos dois bds , como tem n freewares pelaí, ou de escrever o seu, vc considerou ?? Se forem poucas tabelas talvez seja mais rápido isso do que ficar mandando arquivos e testando e mexendo em configs de controlfile, talvez... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" escreveu > > Colega, quando precisei fazer coisa do tipo não tinha LONGs no SS, então não > posso te dar certeza dos datatypes/limites no SS, MAS me parece absolutamente > estranho na tabela vc ter LONG e no controlfile vc ter CHAR(4000), isso está > certo ??? Outra coisa, "formato CSV" normalmente quer dizer comma separated > values, ie,valores separados por VÍRGULA, e no seu controlfile vc diz FIELDS > TERMINATED BY '|', '|' não é vírgula, isso está correto ?? E finalmente, vc > NÂO especifica o caracter de fim de registro, assim o loader está assumindo > fim de linha (eol) : ora, tipicamente em LONGs vc tem TEXTOS, que (óbvio) > possuem EOLs próprios, aí é claro que o sqlldr só pode se perder... > VERIFIQUE isso... > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br, Cyro escreveu > > > > A) Não funciona não. > > > > B) É o mais novo. > > > > C) Já tentei várias vezes. > > > > D) Não mudou nada. > > > > - A solução que eu achei foi gerar as tabelas em formato csv no MSSQL e > > importar via Sql loader. Só que não estou conseguindo de forma alguma. > > Sempre esta me ocorrendo o erro ORA_01460. Para testar o que esta ocorrendo > > eu criei uma simples tabela e e estou tentando importar apenas uma linha. > > > > --- A tabela é: > > > > NomeNulo?Tipo > > --- > > CODCOLIGADANOT NULL NUMBER(5) > > CODRELATORIO NOT NULL VARCHAR2(10) > > CONFIG LONG > > > > > > --- O dado é: > > > > 1|IMPDADOS|IMPDADOS > > > > --- O arquivo de controle é: > > > > LOAD DATA > > CHARACTERSET WE8ISO8859P1 > > INFILE tmp.txt > > BADFILE 'tabela.bad' > > TRUNCATE > > INTO TABLE "APARAMREL" > > FIELDS TERMINATED BY '|' > > TRAILING NULLCOLS ( > > CODCOLIGADA INTEGER(5), > > CODRELATORIO , > > CONFIG CHAR(4000) > > ) > > > > > > --- O arquivo de erro: > > > > ^SQL*Loader: Release 10.2.0.4.0 - Production on Mon Aug 3 16:22:12 2009 > > > > Copyright (c) 1982, 2007, Oracle. All rights reserved. > > > > Control File: aparamrel.ldr > > Character Set WE8ISO8859P1 specified for all input. > > > > Data File: tmp.txt > > Bad File: tabela.bad > > Discard File: none specified > > > > (Allow all discards) > > > > Number to load: ALL > > Number to skip: 0 > > Errors allowed: 50 > > Bind array: 64 rows, maximum of 256000 bytes > > Continuation:none specified > > Path used: Conventional > > > > Table "APARAMREL", loaded from every logical record. > > Insert option in effect for this table: TRUNCATE > > TRAILING NULLCOLS option in effect > > > >Column Name Position Len Term Encl Datatype > > -- -- - > > - > > CODCOLIGADA FIRST 5 > > INTEGER > > CODRELATORIO NEXT * | > > CHARACTER > > CONFIG NEXT 4000 | > > CHARACTER > > > > value used for ROWS parameter changed from 64 to 60 > > Record 1: Rejected - Error on table "APARAMREL". > > ORA-01460: unimplemented or unreasonable conversion requested > > > > Record 2: Rejected - Error on table "APARAMREL". > > ORA-01460: unimplemented or unreasonable conversion requested > > > > Record 3: Rejected - Error on table "APARAMREL". > > ORA-01460: unimplemented or unreasonable conversion requested > > > > Record 4: Rejected - Error on table "APARAMREL". > > ORA-01460: unimplemented or unreasonable conversion requested > > > > > > Table "APARAMREL": > > 0 Rows successfully loaded. > > 4 Rows not loaded due to data errors. > > 0 Rows not loaded because all WHEN clauses were failed. > > 0 Rows not loaded because all fields were null. > > > > > > Space allocated for bind array: 255900 bytes(60 rows) > > Read buffer bytes: 1048576 > > > > Total logical records skipped: 0 > > Total logical records read: 4 > > Total logical records rejected: 4 > > Total logical records discarded:0 > > > > Run began on Mon Aug 03 16:22:12 2009 > > Run ended on Mon Aug 03 16:22:13 2009 > > > > Elapsed time was: 00:00:00.43 > > CPU time was: 00:00:00.15 > > > > > > > > > > > > > > 2009/7/31 jlchiappa > > > > > > > > > > > Faz muuuito tempo desde que me vi numa situação semelhante, mas vou te dar > > > algumas idéias/sugestões : > > > > > > a) um SELECT * FROM tabelaSSquetemLONG funciona ?? Se sim, experimentou > > > criar a tabela vazia no bd Oracle via CREATE TABLE apenas, e depois mandar > >
[oracle_br] Re: Copiar campo long utilizando HSODBC
E claro, nem preciso dizer que no bd Oracle o datatype LONG é ** DEPRECIADO **, e faz anos, não é recomendado o usar, prefira LOBs no bd Oracle para informações string maiores de 4000 bytes... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" escreveu > > Colega, quando precisei fazer coisa do tipo não tinha LONGs no SS, então não > posso te dar certeza dos datatypes/limites no SS, MAS me parece absolutamente > estranho na tabela vc ter LONG e no controlfile vc ter CHAR(4000), isso está > certo ??? Outra coisa, "formato CSV" normalmente quer dizer comma separated > values, ie,valores separados por VÍRGULA, e no seu controlfile vc diz FIELDS > TERMINATED BY '|', '|' não é vírgula, isso está correto ?? E finalmente, vc > NÂO especifica o caracter de fim de registro, assim o loader está assumindo > fim de linha (eol) : ora, tipicamente em LONGs vc tem TEXTOS, que (óbvio) > possuem EOLs próprios, aí é claro que o sqlldr só pode se perder... > VERIFIQUE isso... > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br, Cyro escreveu > > > > A) Não funciona não. > > > > B) É o mais novo. > > > > C) Já tentei várias vezes. > > > > D) Não mudou nada. > > > > - A solução que eu achei foi gerar as tabelas em formato csv no MSSQL e > > importar via Sql loader. Só que não estou conseguindo de forma alguma. > > Sempre esta me ocorrendo o erro ORA_01460. Para testar o que esta ocorrendo > > eu criei uma simples tabela e e estou tentando importar apenas uma linha. > > > > --- A tabela é: > > > > NomeNulo?Tipo > > --- > > CODCOLIGADANOT NULL NUMBER(5) > > CODRELATORIO NOT NULL VARCHAR2(10) > > CONFIG LONG > > > > > > --- O dado é: > > > > 1|IMPDADOS|IMPDADOS > > > > --- O arquivo de controle é: > > > > LOAD DATA > > CHARACTERSET WE8ISO8859P1 > > INFILE tmp.txt > > BADFILE 'tabela.bad' > > TRUNCATE > > INTO TABLE "APARAMREL" > > FIELDS TERMINATED BY '|' > > TRAILING NULLCOLS ( > > CODCOLIGADA INTEGER(5), > > CODRELATORIO , > > CONFIG CHAR(4000) > > ) > > > > > > --- O arquivo de erro: > > > > ^SQL*Loader: Release 10.2.0.4.0 - Production on Mon Aug 3 16:22:12 2009 > > > > Copyright (c) 1982, 2007, Oracle. All rights reserved. > > > > Control File: aparamrel.ldr > > Character Set WE8ISO8859P1 specified for all input. > > > > Data File: tmp.txt > > Bad File: tabela.bad > > Discard File: none specified > > > > (Allow all discards) > > > > Number to load: ALL > > Number to skip: 0 > > Errors allowed: 50 > > Bind array: 64 rows, maximum of 256000 bytes > > Continuation:none specified > > Path used: Conventional > > > > Table "APARAMREL", loaded from every logical record. > > Insert option in effect for this table: TRUNCATE > > TRAILING NULLCOLS option in effect > > > >Column Name Position Len Term Encl Datatype > > -- -- - > > - > > CODCOLIGADA FIRST 5 > > INTEGER > > CODRELATORIO NEXT * | > > CHARACTER > > CONFIG NEXT 4000 | > > CHARACTER > > > > value used for ROWS parameter changed from 64 to 60 > > Record 1: Rejected - Error on table "APARAMREL". > > ORA-01460: unimplemented or unreasonable conversion requested > > > > Record 2: Rejected - Error on table "APARAMREL". > > ORA-01460: unimplemented or unreasonable conversion requested > > > > Record 3: Rejected - Error on table "APARAMREL". > > ORA-01460: unimplemented or unreasonable conversion requested > > > > Record 4: Rejected - Error on table "APARAMREL". > > ORA-01460: unimplemented or unreasonable conversion requested > > > > > > Table "APARAMREL": > > 0 Rows successfully loaded. > > 4 Rows not loaded due to data errors. > > 0 Rows not loaded because all WHEN clauses were failed. > > 0 Rows not loaded because all fields were null. > > > > > > Space allocated for bind array: 255900 bytes(60 rows) > > Read buffer bytes: 1048576 > > > > Total logical records skipped: 0 > > Total logical records read: 4 > > Total logical records rejected: 4 > > Total logical records discarded:0 > > > > Run began on Mon Aug 03 16:22:12 2009 > > Run ended on Mon Aug 03 16:22:13 2009 > > > > Elapsed time was: 00:00:00.43 > > CPU time was: 00:00:00.15 > > > > > > > > > > > > > > 2009/7/31 jlchiappa > > > > > > > > > > > Faz muuuito tempo desde que me vi numa situação semelhante, mas vou te dar > > > algumas idéias/sugestões : > > > > > > a) um SELECT * FROM tabelaSSquetemLONG funciona ?? Se sim, experimentou > > > criar a tabela vazia no bd Oracle via CREATE TABLE apenas, e depois mandar > > > um INSERT INTO tabelaoracle (SELECT * FROM tabelassqueteml...@dblink) ?? > > > > > > b) muitas vezes erros do
[oracle_br] Re: Copiar campo long utilizando HSODBC
Colega, quando precisei fazer coisa do tipo não tinha LONGs no SS, então não posso te dar certeza dos datatypes/limites no SS, MAS me parece absolutamente estranho na tabela vc ter LONG e no controlfile vc ter CHAR(4000), isso está certo ??? Outra coisa, "formato CSV" normalmente quer dizer comma separated values, ie,valores separados por VÍRGULA, e no seu controlfile vc diz FIELDS TERMINATED BY '|', '|' não é vírgula, isso está correto ?? E finalmente, vc NÂO especifica o caracter de fim de registro, assim o loader está assumindo fim de linha (eol) : ora, tipicamente em LONGs vc tem TEXTOS, que (óbvio) possuem EOLs próprios, aí é claro que o sqlldr só pode se perder... VERIFIQUE isso... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Cyro escreveu > > A) Não funciona não. > > B) É o mais novo. > > C) Já tentei várias vezes. > > D) Não mudou nada. > > - A solução que eu achei foi gerar as tabelas em formato csv no MSSQL e > importar via Sql loader. Só que não estou conseguindo de forma alguma. > Sempre esta me ocorrendo o erro ORA_01460. Para testar o que esta ocorrendo > eu criei uma simples tabela e e estou tentando importar apenas uma linha. > > --- A tabela é: > > NomeNulo?Tipo > --- > CODCOLIGADANOT NULL NUMBER(5) > CODRELATORIO NOT NULL VARCHAR2(10) > CONFIG LONG > > > --- O dado é: > > 1|IMPDADOS|IMPDADOS > > --- O arquivo de controle é: > > LOAD DATA > CHARACTERSET WE8ISO8859P1 > INFILE tmp.txt > BADFILE 'tabela.bad' > TRUNCATE > INTO TABLE "APARAMREL" > FIELDS TERMINATED BY '|' > TRAILING NULLCOLS ( > CODCOLIGADA INTEGER(5), > CODRELATORIO , > CONFIG CHAR(4000) > ) > > > --- O arquivo de erro: > > ^SQL*Loader: Release 10.2.0.4.0 - Production on Mon Aug 3 16:22:12 2009 > > Copyright (c) 1982, 2007, Oracle. All rights reserved. > > Control File: aparamrel.ldr > Character Set WE8ISO8859P1 specified for all input. > > Data File: tmp.txt > Bad File: tabela.bad > Discard File: none specified > > (Allow all discards) > > Number to load: ALL > Number to skip: 0 > Errors allowed: 50 > Bind array: 64 rows, maximum of 256000 bytes > Continuation:none specified > Path used: Conventional > > Table "APARAMREL", loaded from every logical record. > Insert option in effect for this table: TRUNCATE > TRAILING NULLCOLS option in effect > >Column Name Position Len Term Encl Datatype > -- -- - > - > CODCOLIGADA FIRST 5 > INTEGER > CODRELATORIO NEXT * | > CHARACTER > CONFIG NEXT 4000 | > CHARACTER > > value used for ROWS parameter changed from 64 to 60 > Record 1: Rejected - Error on table "APARAMREL". > ORA-01460: unimplemented or unreasonable conversion requested > > Record 2: Rejected - Error on table "APARAMREL". > ORA-01460: unimplemented or unreasonable conversion requested > > Record 3: Rejected - Error on table "APARAMREL". > ORA-01460: unimplemented or unreasonable conversion requested > > Record 4: Rejected - Error on table "APARAMREL". > ORA-01460: unimplemented or unreasonable conversion requested > > > Table "APARAMREL": > 0 Rows successfully loaded. > 4 Rows not loaded due to data errors. > 0 Rows not loaded because all WHEN clauses were failed. > 0 Rows not loaded because all fields were null. > > > Space allocated for bind array: 255900 bytes(60 rows) > Read buffer bytes: 1048576 > > Total logical records skipped: 0 > Total logical records read: 4 > Total logical records rejected: 4 > Total logical records discarded:0 > > Run began on Mon Aug 03 16:22:12 2009 > Run ended on Mon Aug 03 16:22:13 2009 > > Elapsed time was: 00:00:00.43 > CPU time was: 00:00:00.15 > > > > > > > 2009/7/31 jlchiappa > > > > > > > Faz muuuito tempo desde que me vi numa situação semelhante, mas vou te dar > > algumas idéias/sugestões : > > > > a) um SELECT * FROM tabelaSSquetemLONG funciona ?? Se sim, experimentou > > criar a tabela vazia no bd Oracle via CREATE TABLE apenas, e depois mandar > > um INSERT INTO tabelaoracle (SELECT * FROM tabelassqueteml...@dblink) ?? > > > > b) muitas vezes erros do tipo são bugzinhos de driver, middleware, coisa do > > tipo : o driver ODBC pra acesso ao SQLServer está Atual ? > > > > c) vc diz que tentou com o SQLDeveloper, já tentou usar a opção de migração > > dele na versão mais atual , que saiu um Julho agora , em > > http://www.oracle.com/technology/tech/migration//workbench/index_sqldev_omwb.html?? > > > > d) configurações : não deveria dar erro, mas vc tentou usar um SET LONG > > no sqlplus, aonde nnn é o valor máximo aceito pelo sqlplus na sua > > versão ? > > > > se nada disso resultar, acho que as possib
Re: [oracle_br] Re: Copiar campo long utilizando HSODBC
A) Não funciona não. B) É o mais novo. C) Já tentei várias vezes. D) Não mudou nada. - A solução que eu achei foi gerar as tabelas em formato csv no MSSQL e importar via Sql loader. Só que não estou conseguindo de forma alguma. Sempre esta me ocorrendo o erro ORA_01460. Para testar o que esta ocorrendo eu criei uma simples tabela e e estou tentando importar apenas uma linha. --- A tabela é: NomeNulo?Tipo --- CODCOLIGADANOT NULL NUMBER(5) CODRELATORIO NOT NULL VARCHAR2(10) CONFIG LONG --- O dado é: 1|IMPDADOS|IMPDADOS --- O arquivo de controle é: LOAD DATA CHARACTERSET WE8ISO8859P1 INFILE tmp.txt BADFILE 'tabela.bad' TRUNCATE INTO TABLE "APARAMREL" FIELDS TERMINATED BY '|' TRAILING NULLCOLS ( CODCOLIGADA INTEGER(5), CODRELATORIO , CONFIG CHAR(4000) ) --- O arquivo de erro: ^SQL*Loader: Release 10.2.0.4.0 - Production on Mon Aug 3 16:22:12 2009 Copyright (c) 1982, 2007, Oracle. All rights reserved. Control File: aparamrel.ldr Character Set WE8ISO8859P1 specified for all input. Data File: tmp.txt Bad File: tabela.bad Discard File: none specified (Allow all discards) Number to load: ALL Number to skip: 0 Errors allowed: 50 Bind array: 64 rows, maximum of 256000 bytes Continuation:none specified Path used: Conventional Table "APARAMREL", loaded from every logical record. Insert option in effect for this table: TRUNCATE TRAILING NULLCOLS option in effect Column Name Position Len Term Encl Datatype -- -- - - CODCOLIGADA FIRST 5 INTEGER CODRELATORIO NEXT * | CHARACTER CONFIG NEXT 4000 | CHARACTER value used for ROWS parameter changed from 64 to 60 Record 1: Rejected - Error on table "APARAMREL". ORA-01460: unimplemented or unreasonable conversion requested Record 2: Rejected - Error on table "APARAMREL". ORA-01460: unimplemented or unreasonable conversion requested Record 3: Rejected - Error on table "APARAMREL". ORA-01460: unimplemented or unreasonable conversion requested Record 4: Rejected - Error on table "APARAMREL". ORA-01460: unimplemented or unreasonable conversion requested Table "APARAMREL": 0 Rows successfully loaded. 4 Rows not loaded due to data errors. 0 Rows not loaded because all WHEN clauses were failed. 0 Rows not loaded because all fields were null. Space allocated for bind array: 255900 bytes(60 rows) Read buffer bytes: 1048576 Total logical records skipped: 0 Total logical records read: 4 Total logical records rejected: 4 Total logical records discarded:0 Run began on Mon Aug 03 16:22:12 2009 Run ended on Mon Aug 03 16:22:13 2009 Elapsed time was: 00:00:00.43 CPU time was: 00:00:00.15 2009/7/31 jlchiappa > > > Faz muuuito tempo desde que me vi numa situação semelhante, mas vou te dar > algumas idéias/sugestões : > > a) um SELECT * FROM tabelaSSquetemLONG funciona ?? Se sim, experimentou > criar a tabela vazia no bd Oracle via CREATE TABLE apenas, e depois mandar > um INSERT INTO tabelaoracle (SELECT * FROM tabelassqueteml...@dblink) ?? > > b) muitas vezes erros do tipo são bugzinhos de driver, middleware, coisa do > tipo : o driver ODBC pra acesso ao SQLServer está Atual ? > > c) vc diz que tentou com o SQLDeveloper, já tentou usar a opção de migração > dele na versão mais atual , que saiu um Julho agora , em > http://www.oracle.com/technology/tech/migration//workbench/index_sqldev_omwb.html?? > > d) configurações : não deveria dar erro, mas vc tentou usar um SET LONG > no sqlplus, aonde nnn é o valor máximo aceito pelo sqlplus na sua > versão ? > > se nada disso resultar, acho que as possibilidades seriam : > > 1. usar um programinha de terceiros (tipo Access ou quetais, há N freewares > pra isso pelaí na net) que pode abrir conexão pras duas máquinas, ler os > dados de A e gravar em B. Um derivado disso é vc escrever um programinha (em > java, .NET, VB, Delphi, whatever) que faça o mesmo > > ou > > 2. gerar um arquivo-texto com as tabelas e importar no Oracle via > sql*loader ou external table > > ou > > 3. tentar inverter a mão, ie, usar o recurso do SS pra se conectar no > Oracle (seja qual for) e de lá mandar um INSERT no bd Oracle > > > []s > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br , Cyro > escreveu > > > > > Boa tarde. > > > > Estou tentando migrar uma base Sqlserver para o Oracle (10.2.0.4 - > Windows > > 32bits). Criei uma conexão Hsodbc entre o Sqlserver e o Oracle. Em > seguida > > realizei um create table as select do sqlserver para o oracle. Ele me > touxe > > todas as tabelas que não possuim tipo long na estrutura. Até ai tudo bem, > > era o que eu esperava. Agora vem a dúvida, como eu poderia fazer para
[oracle_br] Re: Copiar campo long utilizando HSODBC
Faz muuuito tempo desde que me vi numa situação semelhante, mas vou te dar algumas idéias/sugestões : a) um SELECT * FROM tabelaSSquetemLONG funciona ?? Se sim, experimentou criar a tabela vazia no bd Oracle via CREATE TABLE apenas, e depois mandar um INSERT INTO tabelaoracle (SELECT * FROM tabelassqueteml...@dblink) ?? b) muitas vezes erros do tipo são bugzinhos de driver, middleware, coisa do tipo : o driver ODBC pra acesso ao SQLServer está Atual ? c) vc diz que tentou com o SQLDeveloper, já tentou usar a opção de migração dele na versão mais atual , que saiu um Julho agora , em http://www.oracle.com/technology/tech/migration//workbench/index_sqldev_omwb.html ?? d) configurações : não deveria dar erro, mas vc tentou usar um SET LONG no sqlplus, aonde nnn é o valor máximo aceito pelo sqlplus na sua versão ? se nada disso resultar, acho que as possibilidades seriam : 1. usar um programinha de terceiros (tipo Access ou quetais, há N freewares pra isso pelaí na net) que pode abrir conexão pras duas máquinas, ler os dados de A e gravar em B. Um derivado disso é vc escrever um programinha (em java, .NET, VB, Delphi, whatever) que faça o mesmo ou 2. gerar um arquivo-texto com as tabelas e importar no Oracle via sql*loader ou external table ou 3. tentar inverter a mão, ie, usar o recurso do SS pra se conectar no Oracle (seja qual for) e de lá mandar um INSERT no bd Oracle []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Cyro escreveu > > Boa tarde. > > Estou tentando migrar uma base Sqlserver para o Oracle (10.2.0.4 - Windows > 32bits). Criei uma conexão Hsodbc entre o Sqlserver e o Oracle. Em seguida > realizei um create table as select do sqlserver para o oracle. Ele me touxe > todas as tabelas que não possuim tipo long na estrutura. Até ai tudo bem, > era o que eu esperava. Agora vem a dúvida, como eu poderia fazer para copiar > esses tabelas que estão no sqlserver e que possuem tipo long para o oracle ? > > Tentei de várias formas utilizar o copy from do sqplus, mas não resolveu. > Ele não reconhece de forma alguma o dblink. > > Exemplo: > copy from lnk_sqlserver to teste1/tes...@orcl -> append NOTICIA using select > * from noti...@lnk_sqlserver; > > Tamanho do vetor busc./ligaþ.Ú 15. (tamanho do vetor Ú 15) > Validarß quando concluÝdo. (validaþÒoc¾pia Ú 0) > ExtensÒo de tam.mßximo Ú 80. (extensÒo Ú 80) > > ERROR: > ORA-03135: a conexÒo perdeu o contato > > Também tentei utilizar o Sqldeveloper Migration, mas foram inumeros erros > tb. > > Alguem tem mais alguma ideia para fazer isso ? > -- > Att, > Cyro > > > [As partes desta mensagem que não continham texto foram removidas] >