Cara funcionou corretamente. Agora apareceu um erro quando insiro aspas simples, do tipo: insert into teste É possível inserir exatametne da forma como está acima, o comando inteiro, inclusive com as suas aspas?values ('in('02','03','04','05')');
________________________________ De: J. Laurindo Chiappa <jlchia...@yahoo.com.br> Para: oracle_br@yahoogrupos.com.br Enviadas: Quinta-feira, 24 de Janeiro de 2013 21:04 Assunto: [oracle_br] Re: Exportar CLOB E um detalhe adicional, falando sobre programação dentro do Excel, que me Indica que realmente é questão de Ajuste na sua programação : embora eu mesmo não programe nem no Excel nem no VBA e quejandos, uma googlada rápida me mandou para alguns sites (como http://www.utteraccess.com/forum/GetChunk-Method-DAO-t469091.html, http://www.xtremevbtalk.com/showthread.php?t=206066 , http://www.bigresource.com/VB-GetChunk-Output-to-Excel-KWT0sno79u.html e http://support.microsoft.com/?id=185958) que parecem indicar que o "built-in/comando" necessário para se trabalhar com large strings, se vc estiver conectando com ADO no banco Oracle, é o tal do getchunk - veja as refs e em cima disso, avalie a info e faça uma pesquisa mais detalhada no sites de Suporte, foruns e na Documentação do Excel e do VBA, como citei... Agora : aproveitando que vc confirma que os seus CLOBs são todos menores que 32 KB, vc Nem Sequer precisa do trucão do UTL_FILE.PUT para gerar o arquivo num programinha PL/SQL, veja só : ==> Primeiro, criar tabela e uma massinha de dados : SQL> create table TAB_TEST_CLOB ( 2 c1 number, 3 c2 clob); Tabela criada. SQL> create or replace procedure lob_ins(p_id IN number, p_text IN varchar2 ) 2 as 3 l_clob clob; 4 BEGIN 5 insert into TAB_TEST_CLOB values (p_id, empty_clob() ) returning c2 into l_clob; 6 dbms_lob.write( l_clob,length(p_text), 1,p_text); 7* END; Procedimento criado. SQL> exec lob_ins(1, 'Linha 1 com clob pequeno'); Procedimento PL/SQL concluÝdo com sucesso. SQL> exec lob_ins(2, 'Linha 2:' || rpad('$', 20000, '%') || ':fim clob2'); Procedimento PL/SQL concluÝdo com sucesso. SQL> exec lob_ins(2, 'Linha 3:' || rpad('+', 22000, '#') || ':fim clob3'); Procedimento PL/SQL concluÝdo com sucesso. SQL> commit; Commit concluÝdo. ==> veja que tenha um CLOB menor que 4000 e dois CLOBs maiores que 4000 mas menores que o limite de 32 KB do UTL_FILE e do PL/SQL : SQL> select c1, dbms_lob.getlength(c2) tamanho from TAB_TEST_CLOB; C1 TAMANHO ---------- ---------- 1 24 2 20018 2 22018 SQL> => Passo 2, criar um arquivo com os dados do CLOB (e as outras colunas separadas por CHR(9), que é o TAB : SQL> DECLARE 2 l_output utl_file.file_type; 3 BEGIN 4 l_output := utl_file.fopen('DIR_ADMIN', 'ARQ_TESTE_CLOB.TXT', 'w', 32760); 5 for R in (select c1, c2 from TAB_TEST_CLOB) 6 loop 7 utl_file.put_line(l_output, R.c1 || chr(9) || R.c2); 8 end loop; 9 utl_file.fclose(l_output); 10* END; SQL> / Procedimento PL/SQL concluÝdo com sucesso. => veja que gerou direitinho : C:\Windows\system32>dir c:\admin\*.txt O volume na unidade C é HD NOVO 320 GB O Número de Série do Volume é C8A2-9666 Pasta de c:\admin 24/01/2013 20:42 42.072 ARQ_TESTE_CLOB.TXT 1 arquivo(s) 42.072 bytes 0 pasta(s) 66.144.690.176 bytes disponíveis C:\Windows\system32> ==> agora no Excel (Excel 2010, mas deve funcionar no 2007 teu) eu peço um Arquivo/Abrir, escolho o meu arquivo .TXT acima, escolho na importação a opção "Delimitedo", escolho TAB como o caracter delimitador, e avanço : prontinho, tá feita a fofoca... Blz ? Só para mostrar que Realmente importou tudinho, insiro uma coluna depois da primeira, e coloco nela a Fórmula =NÚM.CARACT(C1) , e depois copia essa fórmula para as outras linhas, óia o resultado beleza : 1 24 Linha 1 com clob pequeno 2 20018 Linha 2:$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%....... 3 22018 Linha 3:+###########################################################################....... okdoc ? []s Chiappa OBS : é Claro, no meu caso não tinha new lines dentro do CLOB, então não precisei tratar isso, ok ?? Se vc tem, provavelmente algum ajuste a mais será necessário.... --- Em mailto:oracle_br%40yahoogrupos.com.br, "J. Laurindo Chiappa" escreveu > > Acho que não : o que deve estar havendo é que a linguagem de script do Excel > (que afaik é o que vc está usando para conectar no RDBMS Oracle a partir do > Excel) deve exigir algum setting específico/alguma built-in própria para > permitir large strings.... > Enquanto vc pesquisa isso nos Fóruns e na documentação DO EXCEL (já que é uma > issue Excel, primeiramente), além dos sites/foruns/docs/fontes/refs de > especialistas na tal linguagem, o que eu Recomendo é o que já tinha falado na > outra resposta, ie : OU abandone a programação dentro do Excel e inverta a > ordem, conectando no banco com uma tool que seguramente permite export em > arquivo-texto de CLOBs, como a SQL Developer, e importe esse cara no Excel, > OU programe dentro do database em PL/SQL, gerando arquivo via UTL_FILE e > carregando-o no Excel.... > > []s > > Chiappa > > --- Em mailto:oracle_br%40yahoogrupos.com.br, Jales Jose Moraes escreveu > > > > Chiappa mas vi também que o 2007 comporta 32kb na célula. Acho que o > > problema pode ser que o excel não reconhece um formato CLOB. acho que vou > > ter que fazer um to_varchar e ir concatenando de 4 em 4kb... > > > > > > > > ________________________________ > > De: Jales Jose Moraes > > Para: "mailto:oracle_br%40yahoogrupos.com.br" > > Enviadas: Quinta-feira, 24 de Janeiro de 2013 16:32 > > Assunto: Re: [oracle_br] Re: Exportar CLOB > > > > > > > > é verdade. è que o meu aqui é 2007... > > > > ________________________________ > > De: J. Laurindo Chiappa mailto:jlchiappa%40yahoo.com.br> > > Para: mailto:oracle_br%40yahoogrupos.com.br > > Enviadas: Quinta-feira, 24 de Janeiro de 2013 15:24 > > Assunto: [oracle_br] Re: Exportar CLOB > > > > > > A respeito dos limites do Excel, em > > http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010342495.aspx > > eu vi que o máximo de uma coluna pode ser 32767 caracteres : SE o seu CLOB > > realmente é de no máximo 22 KB, vc não deve ter prob com isso ... > > > > []s > > > > Chiappa > > > > --- Em mailto:oracle_br%40yahoogrupos.com.br, "J. Laurindo Chiappa" escreveu > > > > > > Absolutamente não conheço/não uso o Navigator - já vi gente usando há uns > > > tempos atrás mas eu mesmo não usei - , mas se é um negócio que vc faz > > > Manualmente, sob demanda, eu Sugiro a alternativa não-programada de uma > > > tool que garantidamente faça export de LOBs, como é o freeware da própria > > > Oracle chamado SQL Developer : baixa ele em http://technet.oracle.com/ > > > (pede um cadastro mas é de grátis) .. Com ele vc pode até afaik exportar > > > os dados da sua consulta diretamente até em .XLS : só não sei se o padrão > > > de arquivos .XLS permite uma coluna tão larga, mas é experimentar... Caso > > > o Excel não permita, experimente o formato .XLS... > > > > > > []s > > > > > > Chiappa > > > > > > --- Em mailto:oracle_br%40yahoogrupos.com.br, Jales Jose Moraes escreveu > > > > > > > > Não, as CLOB's que temos dão no máximo 22kb, utilizo o navigator quando > > > > preciso fazer consultas rápidas no banco, daí eu "monto" a consulta e > > > > envio um .xls para o desenvolvedor, mas no caso quando tem CLOB não da > > > > certo. Ja tentei a conexão via o excel, mas ele não reconhece quando > > > > tem o CLOB... > > > > > > > > > > > > > > > > ________________________________ > > > > De: J. Laurindo Chiappa > > > > Para: mailto:oracle_br%40yahoogrupos.com.br > > > > Enviadas: Quinta-feira, 24 de Janeiro de 2013 14:16 > > > > Assunto: [oracle_br] Re: Exportar CLOB > > > > > > > > > > > > > > > > Bem, pra variar vc não diz versão de nada, não diz se os dados vão ser > > > > usados por um outro database Oracle (caso em que o exp ou o expdp podem > > > > servir), se essa tarefa precisa ser efetuada programaticamente OU se > > > > uma tool que tenha a capacidade (como por exemplo o freeware Oracle SQL > > > > Developer) pode ser manualmente executada, nem diz se os CLOBs são > > > > superiores ou não a 32 KB (o tamanho máximo de uma string no PL/SQL), > > > > mas seguinte : afora as tools que normalmente já manipulam isso para vc > > > > , supondo CLOBs maiores que 32 KB, se vc quer algo programado / > > > > automatizado via script, as opções são : > > > > > > > > a) no sqlplus, se vc setar com SET LONG nnn o tamanho máximo, com SPOOL > > > > vc pode gravar dados CLOB, desde Que : > > > > > > > > - o tamanho máximo dos teus CLOBs seja inferior ao máximo aceitado pelo > > > > sqlplus para o SET LONG > > > > > > > > e > > > > > > > > - as limitações do SPOOL (como a dificuldade de criar colunas nã-fixas) > > > > não te atrapalhem > > > > > > > > b) se por qquer motivo a) não te serviu, aí vc Vai ter que partir para > > > > a Programação , num das alternativas : > > > > > > > > 1. em PL/SQL, vc vai usar a UTL_FILE ** mas ** sem ser por put_line, > > > > mas sim juntando vários pedaços de 32 KB com PUT e FLUSH , > > > > http://searchoracle.techtarget.com/answer/Storing-CLOB-as-csv-file tem > > > > um exemplo (bem no fim da Página) > > > > > > > > 2. se vc tiver java disponível (no seu database ou no seu ambiente), e > > > > se vc tiver alguma mínima experiência nele, Java é uma outra opção para > > > > vc programar : http://www.dba-oracle.com/t_export_unload_blob_clob.htm > > > > é um exemplo > > > > > > > > 3. vc poder usar o pro*C da Oracle : > > > > http://phil-sqltips.blogspot.com.br/ tem um exemplo e algumas dicas > > > > básicas de compilação > > > > > > > > 4. vc pode, SE as tiver instaladas, tentar as rotinas de geração de > > > > dados em XML : > > > > http://stackoverflow.com/questions/6538128/oracle-automate-export-unload-of-data > > > > tem um exemplo, não muito completo mas tá lá, a considerar... Eu mesmo > > > > não mexi muito com esses caras, então não sei nem indicar um exemplo > > > > mais completo, mas eles exitem... > > > > > > > > okdoc ? E nem preciso dizer, quase TODAS as linguagens externas que > > > > podem conectar no RDBMS Oracle (perl/php, .NET, Delphi, VB, Cobol, etc, > > > > etc, etc) tem rotinas/comandos/built-ins de geração de arquivos que > > > > podem te ajudar, também... Idem para as tools que possuem linguagem de > > > > script interna e podem conectar no RDBMS, como Excel, por exemplo... > > > > > > > > []s > > > > > > > > Chiappa > > > > > > > > > > > > --- Em mailto:oracle_br%40yahoogrupos.com.br, Jales Jose Moraes escreveu > > > > > > > > > > Pessoal estou trabalhando com campos CLOB's, mas não estou > > > > > conseguindo extrair os dados. A consulta retorna corretamente, mas > > > > > não consigo exportar para um xls, csv,etc. > > > > > > > > > > Alguém sabe como posso disponibilizar estes campos em algum formato > > > > > de arquivo? > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas]