Clarion. Processo de migração de aplicativos Clarion para Microsoft SQL 2019

Eu continuo a falar sobre a vida com a Clarion. Neste post vou descrever minha maneira de resolver uma das tarefas mais frequentes enfrentadas pelos desenvolvedores Clarion, é a migração de programas Clarion para o SGBD SQL Miscrosoft.





Acontece que há alguns meses, 2 programas em tecnologia Clarion foram entregues a mim para manutenção, o motivo é triste, a velha geração está indo embora e foi isso que aconteceu com meu orientador científico. Por vários anos trabalhei com ele como programador na Clarion, depois perdi o interesse por essa tecnologia e nossos caminhos divergiram. E agora, após um lapso de anos, sou confrontado com a necessidade de apoiar e ocasionalmente desenvolver 2 programas.





Problemático

Na minha opinião, o principal problema e complexidade é o trabalho do programa apenas com o DBMS Clarion nativo, o acesso aos dados com esta abordagem é muito malsucedido, uma grande quantidade de código é necessária para escrever até as tarefas mais simples, que são resolvidas por enviando o mais simples Update ou Insert para o servidor no Clarion, são dezenas de linhas de código para abrir um arquivo, obter acesso ao infe e depois fechá-lo. Abaixo está um exemplo:





       Access:Agent.Open 					! 
       Access:Agent.UseFile				! 
       clear(AGN:Record)					!     
       AGN:ID_AGENT = some_id 		!  
       set(AGN:BY_ID,AGN:BY_ID)		! ""    
       next(agent)								!     
       IF errorcode() or AGN:ID_AGENT <> some_id	!       
            RETVAL = '  '				! 
          ELSE													
            RETVAL = AGN:N_AGENT									!  
       .								
       Access:Agent.Close												  ! 
      
      



, , " " "" . . SQL :





select agent.name where id = some_id
      
      



, " 1 ", , SQL, SQL . , SQL SQL.









: 80





: 250





: + ( )





:





3





5 -









  • DCT2SQL





  • Cldump





  • BULK insert





  • UltimateSQL & Ultimate Debug





, , . . post dat .





DCT2SQL

Dictionary SQL, , foreign keys. , . .





Github





youtube . SQL.





CLDUMP

*.dat csv BULK. - . 10 15-20 . , Linux, debian. -, post , csv .





, "" , , , "" . " " " ". . , , "".





cldump debian :





apt-get install cldump
      
      



BULK insert

Em uma fração de segundo puxa uma tabela do csv para o SQL. Neste caso, porque as vinculações de dados já estão configuradas para IDs existentes, mas, ao mesmo tempo, o incremento automático precisa funcionar, portanto, deve ser desativado temporariamente. Também gastei muito tempo para encontrar separadores adequados:





BULK INSERT dbo.%table_name%
FROM table_name.csv WITH ( 
FORMAT = 'CSV', 
FIELDQUOTE = '', 
FIRSTROW = 1, 
FIELDTERMINATOR = '0x3b', 
ROWTERMINATOR = '0x0a', 
CODEPAGE='65001',
TABLOCK, 
KeepIdentity)
      
      



UltimateSQL e Ultimate Debug

Esses componentes permitem que você carregue dados de SQL em QUEUE desta forma:





SQL_Result = sql.query('
select id, path_to_result 
from dbo.export_tasks as et 
where 
(status_complete = 0 or status_complete = 2) 
and export_table_id = '& exp:id
,qexport_tasks)
      
      



Execute consultas sem valores de retorno:





sql.Query('Update export_tasks set status_complete = 2 where id = ' & qexport_tasks.id)
      
      



Há uma ótima descrição de como usar no youtube:





Além disso, ao instalar, dentro dos templates há um “ovo de Páscoa” do autor, como resolver a quest é descrito pelo link .








All Articles