1 Reply Latest reply: Oct 30, 2017 5:46 PM by Alessandro Furtado RSS

    LOAD de múltiplos arquivos XML

    Ricardo Luz

      Olá, senhores.

      Estou tentando carregar múltiplos arquivos XML (+10.000) com um For Each, conforme script abaixo.

      Entretanto, algumas vezes, depois de carregar uma certa quantidade de arquivos a tela carga de dados continua o contador, mas não executa mais nada. Ao fechar o app e tentar VÁRIAS vezes eu consigo finalizar o load.

       

      Não é um arquivo específico porque já coloquei um trace com o nome do arquivo para tentar identificar algum erro e a execução "trava" em momentos diferentes.

       

      Alguém já enfrentou essa dificuldade?

      LET vRoot = 'lib://xmlpath/*.xml';
      For Each vXMLFile in FileList(vRoot)
      
          If $(#val) >0 then
              XML:
              LOAD    
                  If(INDEX("NFe/infNFe/infAdic/infCpl",'80040')>0,
                  MID("NFe/infNFe/infAdic/infCpl",INDEX("NFe/infNFe/infAdic/infCpl",'80040'),10),
                  'OC NÃO ENCONTRADA')                            as OC,
                  If(INDEX(UPPER("NFe/infNFe/infAdic/infCpl"),'MODELO')>0,
                  MID("NFe/infNFe/infAdic/infCpl",INDEX(UPPER("NFe/infNFe/infAdic/infCpl"),'MODELO')+7,4),
                  'MODELO NÃO ENCONTRADO')                        as XML_MODELO,
                  "NFe/infNFe/det/prod/cProd" as XML_PNC,
                  "NFe/infNFe/det/prod/CFOP" as XML_CFOP,
                  replace("NFe/infNFe/det/prod/vProd",'.',',') as XML_VALOR,
                  "NFe/infNFe/dest/CNPJ" as XML_CNPJ_DEST,
                  "NFe/infNFe/dest/enderDest/CEP" as XML_CEP_DEST,
                  "NFe/infNFe/dest/enderDest/UF" as XML_UF_DEST,
                  "NFe/infNFe/emit/CNPJ" as XML_CNPJ_EMIT,
                  "NFe/infNFe/emit/enderEmit/UF" as XML_UF_EMIT,
                  "NFe/infNFe/ide/dhEmi" as XML_DATA_EMISSÃO,
                  "NFe/infNFe/ide/nNF" as XML_nNF,
                  FileName() as XML_FILENAME
                  FROM
                  [$(vXMLFile)](XmlSimple, table is nfeProc);
          End If
      Next vXMLFile
      

       

      Obrigado desde já.

        • Re: LOAD de múltiplos arquivos XML
          Alessandro Furtado

          Ricardo,

           

          Se tentar ler sem um for mas com o * no nome do arquivo?

           

           

          LOAD    

                      If(INDEX("NFe/infNFe/infAdic/infCpl",'80040')>0,

                      MID("NFe/infNFe/infAdic/infCpl",INDEX("NFe/infNFe/infAdic/infCpl",'80040'),10),

                      'OC NÃO ENCONTRADA')                            as OC,

                      If(INDEX(UPPER("NFe/infNFe/infAdic/infCpl"),'MODELO')>0,

                      MID("NFe/infNFe/infAdic/infCpl",INDEX(UPPER("NFe/infNFe/infAdic/infCpl"),'MODELO')+7,4),

                      'MODELO NÃO ENCONTRADO')                        as XML_MODELO,

                      "NFe/infNFe/det/prod/cProd" as XML_PNC,

                      "NFe/infNFe/det/prod/CFOP" as XML_CFOP,

                      replace("NFe/infNFe/det/prod/vProd",'.',',') as XML_VALOR,

                      "NFe/infNFe/dest/CNPJ" as XML_CNPJ_DEST,

                      "NFe/infNFe/dest/enderDest/CEP" as XML_CEP_DEST,

                      "NFe/infNFe/dest/enderDest/UF" as XML_UF_DEST,

                      "NFe/infNFe/emit/CNPJ" as XML_CNPJ_EMIT,

                      "NFe/infNFe/emit/enderEmit/UF" as XML_UF_EMIT,

                      "NFe/infNFe/ide/dhEmi" as XML_DATA_EMISSÃO,

                      "NFe/infNFe/ide/nNF" as XML_nNF,

                      FileName() as XML_FILENAME

                      FROM

                      [*.xml](XmlSimple, table is nfeProc);

           

           

           

          Outra coisa, ler uns 10mil arquivos, nao seria melhor implementar um incremental e ler os arquivos XML novos e concatenar com os antigos em QVD?