Clarín. Proceso de migración de la aplicación Clarion a Microsoft SQL 2019

Sigo hablando de la vida con Clarion. En este post describiré mi forma de resolver una de las tareas más frecuentes a las que se enfrentan los desarrolladores de Clarion, es la migración de los programas de Clarion al DBMS SQL de Miscrosoft.





Sucedió que hace unos meses me entregaron 2 programas sobre tecnología Clarion para su servicio, la razón es triste, la vieja generación se va, y esto es lo que le pasó a mi asesor científico. Durante varios años trabajé con él como programador en Clarion, luego perdí interés en esta tecnología y nuestros caminos divergieron. Y ahora, después de un lapso de años, me enfrento a la necesidad de apoyar y ocasionalmente desarrollar 2 programas.





Problemático

Clarion, , , Update Insert Clarion , . :





       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

En una fracción de segundo, extrae una tabla de csv a SQL. En este caso, porque los enlaces de datos ya están configurados para los ID existentes, pero al mismo tiempo, el incremento automático debe funcionar, por lo que debe desactivarse temporalmente, también pasé bastante tiempo para encontrar separadores adecuados:





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



UltimateSQL y Ultimate Debug

Estos componentes le permiten cargar datos de SQL en COLA de esta manera:





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)
      
      



Ejecute consultas sin valores devueltos:





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



Hay una gran descripción de cómo usar en youtube:





Además, al instalar, dentro de las plantillas hay un "huevo de Pascua" del autor, cómo resolver la búsqueda se describe en el enlace .








All Articles