PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → WX - Solução para Importar mais de 3 milhões de registros do ms sql server para o hfsql
WX - Solução para Importar mais de 3 milhões de registros do ms sql server para o hfsql
Débuté par BOLLER, 10 juil. 2017 15:14 - 3 réponses
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 10 juillet 2017 - 15:14
Hi Adriano,

I'm pleased to go back to you relating to #103683 issue.
After analysis by our developer team, I can say that the problem is related to the memory requirement necessary for the procedure.
For this procedure, the memory is simply insufficient.

Solution : Use the hForwardOnly parameter for the hReadFirst function.

HReadFirst(t0010_enderecoscorreios,Sequencial,hForwardOnly)

hForwardOnly
Native Accesses only:
Used to speed up the browse of data during a simple browse that does not use the following features:
•Read the previous record.
•Modify a record.
•Save the position.
If one of these features is used, the result may differ from the expected one.
This constant can be used for example during a browse used to fill a memory table.

With this parameter, The process ends without error.

Another woraround :
Create a 64bits configuration on a PC with enough memory.
but it seems better to reduce memory usage.

Please do not hesitate to contact me for any additional information.


PC SOFT Véronique BRUNIER
PC SOFT Assistance Directe

Tel. : +33 (0)4 67 03 20 32
Fax : +33(0)4 67 03 07 87
Mail : ad@pcsoft.fr
Site : www.windev.com
Reference : AD7422
Regarding this intervention, 24 minutes have been debited from your 'Assistance Directe' contract.

Events :
- Upgrade to version 22 now : 922 new features


© PC SOFT. Information contained in this document cannot be used, duplicated or released without prior written agreement of PC SOFT.
Despite the attention given to the replies, PC SOFT shall not be liable for damages of any nature.


-----

Oi Adriano,

Tenho o prazer de voltar para você em relação ao número 103683.
Após a análise da nossa equipe de desenvolvedores, posso dizer que o problema está relacionado ao requisito de memória necessário para o procedimento.
Para este procedimento, a memória é simplesmente insuficiente.

Solução: use o parâmetro hForwardOnly para a função hReadFirst.

HReadFirst (t0010_enderecoscorreios, Sequencial, hForwardOnly)

HForwardOnly
Acesso nativo apenas:
Usado para acelerar a navegação de dados durante uma navegação simples que não usa os seguintes recursos:
• Leia o registro anterior.
• Modifique um registro.
• Salve a posição.
Se um desses recursos for usado, o resultado pode ser diferente do esperado.
Esta constante pode ser usada, por exemplo, durante uma navegação usada para preencher uma tabela de memória.

Com este parâmetro, o processo termina sem erro.

Outra preocupação:
Crie uma configuração de 64bits em um PC com memória suficiente.
Mas parece melhor reduzir o uso da memória.

Não hesite em contactar-me para qualquer informação adicional.


PC SOFT Véronique BRUNIER
PC SOFT Assistance Directe
 
Tel. : +33 (0) 4 67 03 20 32
Fax: +33 (0) 4 67 03 07 87
Correio: ad@pcsoft.fr
Site: www.windev.com
Referência: AD7422
Em relação a esta intervenção, 24 minutos foram debitados do seu contrato "Assistance Directe".

Eventos:
- Atualize para a versão 22 agora: 922 novos recursos


© PC SOFT. As informações contidas neste documento não podem ser usadas, duplicadas ou liberadas sem acordo prévio por escrito da PC SOFT.
Apesar da atenção dada às respostas, a PC SOFT não se responsabiliza por danos de qualquer natureza.

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 10 juillet 2017 - 20:22
SERIAL is int = 0
nSequencial est un entier = 0

PROGBAR_01..BorneMax = HNbEnr(t0010_enderecoscorreios)
PROGBAR_01..Value = 0

HReadFirst(t0010_enderecoscorreios,Sequencial,hForwardOnly)
WHILE NOT HOut(t0010_enderecoscorreios) //leitura da tabela ms sql server // TABELA DE ORIGEM

SERIAL += 1

SI Modulo(SERIAL,1000000)=0 ALORS
// On ne déconnecte et on recommence
nSequencial = t0010_enderecoscorreios.Sequencial
HFerme(t0010_enderecoscorreios)
HFerme(enderecoscorreios)
HFermeConnexion(ConnMSSQL)
HReadSeek(t0010_enderecoscorreios,Sequencial,nSequencial)
FIN


//HFSQL = MS SQL SERVER 2016 / DEVELOPER
enderecoscorreios.LogradouroAbrev = t0010_enderecoscorreios.LogradouroAbrev
enderecoscorreios.Logradouro = t0010_enderecoscorreios.Logradouro
enderecoscorreios.LogradouroCompl = t0010_enderecoscorreios.LogradouroCompl
enderecoscorreios.Fonetica = t0010_enderecoscorreios.Fonetica
enderecoscorreios.LogradouroTipo = t0010_enderecoscorreios.LogradouroTipo
enderecoscorreios.CEP = t0010_enderecoscorreios.CEP
enderecoscorreios.Bairro = t0010_enderecoscorreios.Bairro
enderecoscorreios.BairroAbrev = t0010_enderecoscorreios.BairroAbrev
enderecoscorreios.IDCidade = t0010_enderecoscorreios.IDCidade
enderecoscorreios.Cidade = t0010_enderecoscorreios.Cidade
enderecoscorreios.SubCidadeAbrev = t0010_enderecoscorreios.SubCidadeAbrev
enderecoscorreios.SubCidade = t0010_enderecoscorreios.SubCidade
enderecoscorreios.CodIBGECid = t0010_enderecoscorreios.CodIBGECid
enderecoscorreios.CodIBGEUF = t0010_enderecoscorreios.CodIBGEUF
enderecoscorreios.UF = t0010_enderecoscorreios.UF
enderecoscorreios.LogradouroIniciais = t0010_enderecoscorreios.LogradouroIniciais

ok is boolean = HWrite(enderecoscorreios, SERIAL,hForceIdAuto) // gravacao no hfsql
IF NOT ok THEN Trace(HErrorInfo(hErrFullDetails)+CR+CR)

PROGBAR_01..Value += 1
IF Modulo(PROGBAR_01,10000) = 0 THEN
Trace(t0010_enderecoscorreios.Sequencial)
MultitaskRedraw() //permite compartilhar o processador com os outros prog e serviços windows
END

HReadNext(t0010_enderecoscorreios,Sequencial)
END


HIndex(enderecoscorreios,hNdxNormal,PROGBAR_01)

Info(SERIAL)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 10 juillet 2017 - 23:13




--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 10 août 2017 - 22:09
NextTitle("Atenção")
ok1, ok2, ok3, ok4, ok5, ok6, ok7, ok8, LoginOK is boolean

//Chumbado
sGsPaginaInicial is string = "PAGE_Logado"
nReturnedValue is int = 0

gpwUser is Data Source <------------------------------- nao pode ter esse nome na analise igual deve ser diferente
CNT_GPW is Connection
CNT_GPW..Provider = hNativeAccessSQLServer
CNT_GPW..User = "integracao-wd"
CNT_GPW..Password = "4s31nt!360"
CNT_GPW..Source = "192.168.0.217\360"
CNT_GPW..Database = "360_catalogo" //conectar primeiro no catalogo
CNT_GPW..CryptMethod = hCryptNo


// Open the connection
ok1 = gpwOpenConnection(CNT_GPW)

ok2 = HOpenConnection(CNT_GPW)
IF ok2 = False THEN
Info(ErrorOccurred() +" - "+ HErrorInfo())
END

ok3 = HChangeConnection(gpwUser,CNT_GPW)

IF ErrorInfo() > 0 OR ok3 = False
Error(HErrorInfo() + CR + ErrorInfo())
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/