Oi Adalberto, vou explorar mais ainda a dúvida sobre o EXP..

Você tá fazendo importação sem linhas e depois importando com um SELECT
criado, digamos, "na marra".

Porque você não faz o import com linhas? Você deixa uma versão inicial do
banco sempre atualizada com o sistema e pronta para ser exportada.

E, se você puder e tiver tempo, mude pro Data Pump Export ao invés do export
convencional (EXP). Ele é muito mais completo, performático, flexível e
fácil de gerenciar problemas.

Para tentar fazer funcionar do jeito que você já tá trabalhando, antes dos
INSERTs, defina o charset igual ao do banco setando a variável de ambiente
NLS_LANG, conforme o meu exemplo (de brincadeira) abaixo:

C:\Users\Gleyson>set NLS_LANG='AMERICAN_BRAZIL.AL32UTF8';

E depois, no sqlplus:

SQL> select * from nls_session_parameters;

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  BRAZIL
NLS_CURRENCY                   R$
NLS_ISO_CURRENCY               BRAZIL
NLS_NUMERIC_CHARACTERS         ,.
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD/MM/RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT           DD/MM/RR HH24:MI:SSXFF

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_TIME_TZ_FORMAT             HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT        DD/MM/RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY              Cr$
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE

17 rows selected.

O client Oracle utiliza a variável de ambiente com o mesmo nome do parâmetro
NLS para definir o seu valor.

Aí, com o NLS_LANG batendo corretamente com o banco, creio que você tenha
menos chance de ter problema. Isso é só um palpite mesmo, mas eu apostaria
no Data Pump. Com isso você resolveria problemas com tipos mais elaborados,
como BLOB também.

Abraços.

Atenciosamente,
Gleyson Melo


Em 30 de julho de 2010 10:43, Adalberto de Sousa Monteiro
<asm...@gmail.com>escreveu:

> Bom dia meu velho ... novamente, obrigado pela ajuda.
> Vamos la... espero conseguir explicar ...
>
> A ideia seria "criar" o banco de dados via software, dessa forma executo da
> minha base de desenvolvimento um EXPORT de um determinado Owner, gerando um
> DMP com o parametro rows=N
>
> Exemplo da Linha de Comando: exp ophiuchus/sys...@xe file=c:\EXP_TA.DMP
> log=c:\EXP_TA.LOG owner=ophiuchus compress=Y grants=Y indexes=Y triggers=Y
> constraints=Y rows=N
>
> No sistema existem algumas tabelas padrões, exemplo, uma tabela de botoes.
> Após o export, executo um select nessa tabela e crio um script com a linha
> de comando INSERT para cada registro.
>
> Exemplo da Linha: INSERT INTO TABOTAO(DS_BMP, DS_CAPTION, DS_FONTE,
> DS_HINT,
> DS_LAYOUT, FL_ATIVO, FL_BLQSYS, FL_ENABLE, FL_FLAT, FL_FONTE_NEGRITO,
> FL_SHOWHINT, FL_VISIVEL, ID_BOTAO, NM_BOTAO, QT_ALTURA, QT_COMPRIMENTO,
> QT_FONTE_TAMANHO, QT_LARGURA, QT_ORDEM) VALUES ('CONFIGPROG.BMP', '',
> 'ARIAL', 'CONFIGURAÇÃO DO PROGRAMA', 'BLGLYPHTOP', 'S', 'hExkYog/+ww=',
> 'S',
> 'S', 'S', 'S', 'S', 228, 'BTNCONFIGPROG', 5, 35, 8, 35, 0)
>
> Dessa forma, envio ao cliente os arquivos do sistema, um DMP e um arquivo
> com todos os INSERT´s necessarios.
>
> O cliente seguiria a seguinte rotina: Instalar o Oracle XE (Next / Next),
> definindo uma senha para o SYSTEM de seu banco.
> Acessa o software que desenvolvi com a senha do SYSTEM e nele executo o IMP
> do DMP, aonde serão criados todos os objetos sem nenhum registro. Ao
> termino
> executo o comando "EXECUTE DBMS_UTILITY.COMPILE_SCHEMA('USER');" no intuito
> de compilar todos os objetos (Seria necessario? Nao sei, rs).
>
> Na sequencia, via sistema abro o arquivo TEXTO e começo a "pegar" linha a
> linha (Insert) e executar nesse novo banco de dados. É nesse momento que
> estou tendo problemas ....e somente com "alguns" caracteres, a principio
> identifiquei que seria o " Ç ", pois outros registros foram inseridos,
> tendo
> " ~ ", exemplo.
>
> A versão do banco seria:
>   Oracle® Database Express Edition Getting Started Guide
>   10g Release 2 (10.2)
>   B25610-01
>
> Estive pesquisando "select * from nls_database_parameters" e obtive o
> seguinte resultado:
>
>    *PARAMETER* *VALUE* NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA
> NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS .,
> NLS_CHARACTERSET AL32UTF8 NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR
> NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM
> NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT
> HH.MI.SSXFF
> AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
> NLS_DUAL_CURRENCY $ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE
> NLS_NCHAR_CONV_EXCP FALSE NLS_NCHAR_CHARACTERSET AL16UTF16
> NLS_RDBMS_VERSION
> 10.2.0.1.0
>
> Preciso alterar algo? Porque os registros na base original (de
> desenvolvimento responsavel em gerar o DMP), foram inseridos sem erro e com
> os caracteres especiais? E me gera erro somento no "insert" dos dados?
>
> Na base original, eu os inseri direto no banco de dados, na "mão".
>
> Abraços e um otimo final de semana a todos,
> Adalberto
>
>
>
> Em 30 de julho de 2010 09:16, Gleyson Melo <gleysonm...@gmail.com>
> escreveu:
>
> >
> >
> > Você pode fazer isso usando Export (preferencialmente Data Pump). Você
> > exporta os dados pra um arquivo e importa no outro banco. Isso atenderia?
> > Existe algum requisito a mais que impeça isso? Essa rotina vai ser
> > executada
> > automaticamente ou manualmente?
> >
> > Ah, qual a versão do seu banco?
> >
> > Abraços.
> >
> > Atenciosamente,
> > Gleyson Melo
> >
> > Em 29 de julho de 2010 16:04, Adalberto de Sousa Monteiro
> >
> > <asm...@gmail.com <asm190%40gmail.com>>escreveu:
> >
> > > Fala rapaz, valeu pelo retorno.
> > >
> > > Então, aonde e como confiro o charset ?
> > >
> > > Estou utilizando o Delphi 7 com o componente de acesso ODAC, conhece?
> > >
> > > O estranho é que se eu pegar a linha de comando e executar via PL/SQL
> > > Developer, funciona corretamente.
> > >
> > > Lembrando que essa linha de comando é gerada apartir de dados do mesmo
> > > banco
> > > de dados, ou seja, tenho um banco de dados de desenvolvimento, aonde
> vou
> > > inserindo alguns dados em tabelas funcionais ao sistema. Depois monto
> uma
> > > rotina que gera um TXT com base nessas tabelas montando a linha de
> > comando
> > > do INSERT.
> > >
> > > O que quero fazer é simplesmente retornar esses dados de volva ao
> banco,
> > > porem em um banco aonde as tabelas estão vazias.
> > >
> > > Abraços e obrigado,
> > >
> > > Em 29 de julho de 2010 14:50, Gleyson Melo <gleysonm...@gmail.com
> <gleysonmelo%40gmail.com>
> > >
> > > escreveu:
> > >
> > > >
> > > >
> > > > Qual é o Charset do seu XE? Você baixou aquele básico? Unicode?
> > > >
> > > > Você tem que gerenciar o problema de Charset nas camadas de
> comunicação
> > > com
> > > > o banco.
> > > >
> > > > Você pode considerar a geração de um arquivo texto e a carga dos
> dados
> > > > através de sql*loader, dependendo do seu problema.
> > > >
> > > > Que linguagem você tá usando? Tá usando que componentes diretamente
> no
> > > > código? ADO?
> > > >
> > > > Abraços.
> > > >
> > > > Atenciosamente,
> > > > Gleyson Melo
> > > >
> > > > Em 28 de julho de 2010 15:56, Adalberto de Sousa Monteiro
> > > > <asm...@gmail.com <asm190%40gmail.com> <asm190%40gmail.com
> >>escreveu:
> >
> > > >
> > > >
> > > > >
> > > > >
> > > > > Pessoal, boa tarde.
> > > > >
> > > > > Estou desenvolvendo um programa para executar alguns "INSERT´s" em
> > uma
> > > > base
> > > > > ORACLE. Estou utilizando Oracle XE e drive de acesso ODAC.
> > > > >
> > > > > Crio em tempo de execução um componente para Query : OraQryKey :
> > > > > TOraQuery;
> > > > >
> > > > > Leio um arquivo texto aonde contem as sintaxes de INSERT. Cada
> > sintaxe
> > > eu
> > > > > executo da seguinte maneira:
> > > > > OraQryKey.SQL.Clear;
> > > > > OraQryKey.SQL.Text := vs_Linha;
> > > > > OraQryKey.Execute;
> > > > >
> > > > > Para algumas sintaxes, estou tendo como resultado o seguinte erro:
> > > > > ORA-00917: missing comma
> > > > > Essa é uma linha que me retorna o erro: INSERT INTO
> > > > > TAENTIDADE_TEMP_LAYOUT(DS_COLUNA, FL_ATIVO, ID_LAYOUT, NM_COLUNA,
> > > > > NM_TABELA,
> > > > > NR_ORDEM) VALUES ('Complemento do Endereço', 'S', 12,
> > 'DS_COMPLEMENTO',
> > > > > 'TAENTIDADE_TEMP', 5)
> > > > >
> > > > > Caso eu altere o "Endereço" para "Endereco" e executo,
> funcionamento
> > > > > perfeitamente.
> > > > >
> > > > > Em outros casos, tenho o seguinte erro: ORA-00911: invalid
> character
> > > > > Quando a sintaxe esta dessa forma: INSERT INTO
> TAPROGRAMA(DS_CAPTION,
> > > > > DS_COLOR_TITULO, DS_HELP, DS_HINT, FL_ITEMDEC, ID_PROGRAMA,
> > > NM_PROGRAMA,
> > > > > NR_ITEMPRINC, QT_COMPRIMENTO_TELA, QT_LARGURA_TELA) VALUES
> ('Iniciar
> > /
> > > > > Pausar Serviço', '$00FFB7B7', '', '', 'N', 10, 'FORM_STARTSTOP', 0,
> > > 575,
> > > > > 180)
> > > > >
> > > > > E quando altero para essa forma, funciona: INSERT INTO
> > > > > TAPROGRAMA(DS_CAPTION, DS_COLOR_TITULO, DS_HELP, DS_HINT,
> FL_ITEMDEC,
> > > > > ID_PROGRAMA, NM_PROGRAMA, NR_ITEMPRINC, QT_COMPRIMENTO_TELA,
> > > > > QT_LARGURA_TELA) VALUES ('Iniciar / Pausar Servico', '$00FFB7B7',
> '',
> > > '',
> > > > > 'N', 10, 'FORM_STARTSTOP', 0, 575, 180)
> > > > > Alterando somente o "Serviço" para "Servico".
> > > > >
> > > > > Alguem saberia me dizer porque?
> > > > >
> > > > > Porém outros "inserts" com caracteres desse tipo, vai numa boa, até
> > > mesmo
> > > > > para a mesma tabela, como o exemplo abaixo:
> > > > > INSERT INTO TAPROGRAMA(DS_CAPTION, DS_COLOR_TITULO, DS_HELP,
> DS_HINT,
> > > > > FL_ITEMDEC, ID_PROGRAMA, NM_PROGRAMA, NR_ITEMPRINC,
> > > QT_COMPRIMENTO_TELA,
> > > > > QT_LARGURA_TELA) VALUES ('Manutenção de Ações', '$00FFB7B7', '',
> '',
> > > 'N',
> > > > > 27, 'FORM_CADACAO', 0, 800, 410)
> > > > > INSERT INTO TAENTIDADE_TEMP_LAYOUT(DS_COLUNA, FL_ATIVO, ID_LAYOUT,
> > > > > NM_COLUNA, NM_TABELA, NR_ORDEM) VALUES ('DATA DA ULTIMA ALTERAÇÃO
> DO
> > > > > REGISTRO', 'N', 18, 'DT_ALTERACAO', 'TAENTIDADE_TEMP', 0)
> > > > >
> > > > > Utilizo para acesso o banco de dados o PL/SQL Developer e se
> executo
> > a
> > > > > mesma
> > > > > linha diretamente por ele, insere tranquilamente.
> > > > >
> > > > > [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]
> > >
> > >
> > >
> > > ------------------------------------
> >
> > >
> > >
> > > ----------------------------------------------------------
> > > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> > > inteira responsabilidade de seus remetentes.
> > > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> > >
> > > ----------------------------------------------------------
> > > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
> > Procedure
> > > » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO!
> VISITE:
> > > http://www.oraclebr.com.br/
> > > ----------------------------------------------------------
> > > Links do Yahoo! Grupos
> >
> > >
> > >
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
>
> --------------------------------------------------------------------------------------------------------------------------
> >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> inteira responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
>
> --------------------------------------------------------------------------------------------------------------------------
> >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure
> » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
> http://www.oraclebr.com.br/
> ------------------------------------------------------------------------------------------------------------------------
> Links do Yahoo! Grupos
>
>
>


[As partes desta mensagem que não continham texto foram removidas]

Responder a