Clarion. Clarion-Anwendungsmigrationsprozess zu Microsoft SQL 2019

Ich rede weiter über das Leben mit Clarion. In diesem Beitrag werde ich meine Art der Lösung einer der häufigsten Aufgaben beschreiben, mit denen Clarion-Entwickler konfrontiert sind. Es handelt sich um die Migration von Clarion-Programmen auf das Miscrosoft SQL DBMS.





So kam es, dass mir vor einigen Monaten zwei Programme zur Clarion-Technologie zum Service übergeben wurden. Der Grund ist traurig, die alte Generation geht, und genau das ist meinem wissenschaftlichen Berater passiert. Ich habe mehrere Jahre als Programmierer bei Clarion mit ihm zusammengearbeitet, dann das Interesse an dieser Technologie verloren und unsere Wege gingen auseinander. Und jetzt, nach einigen Jahren, stehe ich vor der Notwendigkeit, zwei Programme zu unterstützen und gelegentlich zu entwickeln.





Problematisch

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

In Sekundenbruchteilen zieht eine Tabelle von CSV in SQL. In diesem Fall, weil Datenbindungen sind bereits für vorhandene IDs konfiguriert, aber gleichzeitig muss die automatische Inkrementierung funktionieren, sodass sie vorübergehend deaktiviert werden muss. Außerdem habe ich viel Zeit damit verbracht, geeignete Trennzeichen zu finden:





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



UltimateSQL & Ultimate Debug

Mit diesen Komponenten können Sie Daten aus SQL wie folgt in QUEUE laden:





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)
      
      



Abfragen ohne Rückgabewerte ausführen:





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



Es gibt eine großartige Beschreibung der Verwendung auf Youtube:





Bei der Installation befindet sich in den Vorlagen ein "Osterei" des Autors. Wie Sie die Quest lösen, wird durch den Link beschrieben .








All Articles