私はクラリオンとの生活について話し続けています。この投稿では、Clarion開発者が直面する最も頻繁なタスクの1つを解決する方法について説明します。それは、ClarionプログラムのMiscrosoft SQLDBMSへの移行です。
たまたま数ヶ月前、クラリオン技術に関する2つのプログラムがサービスのために私に引き渡されました。理由は悲しいです。古い世代は去っていきます。これが私の科学顧問に起こったことです。数年間、私はクラリオンでプログラマーとして彼と一緒に仕事をしましたが、その後、このテクノロジーへの興味を失い、私たちの道は分岐しました。そして今、何年も経った今、私は2つのプログラムをサポートし、時には開発する必要に直面しています。
問題がある
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. , . .
youtube . SQL.
CLDUMP
*.dat csv BULK. - . 10 15-20 . , Linux, debian. -, post , csv .
, "" , , , "" . " " " ". . , , "".
cldump debian :
apt-get install cldump
BULK insert
ほんの一瞬で、テーブルをcsvからSQLにプルします。この場合、データバインディングは既存のIDに対してすでに構成されていますが、同時に自動インクリメントが機能する必要があるため、一時的に無効にする必要があります。また、適切なセパレーターを見つけるためにかなりの時間を費やしました。
BULK INSERT dbo.%table_name%
FROM table_name.csv WITH (
FORMAT = 'CSV',
FIELDQUOTE = '',
FIRSTROW = 1,
FIELDTERMINATOR = '0x3b',
ROWTERMINATOR = '0x0a',
CODEPAGE='65001',
TABLOCK,
KeepIdentity)
UltimateSQLとUltimateDebug
これらのコンポーネントを使用すると、次のようにSQLからQUEUEにデータをロードできます。
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)
戻り値なしでクエリを実行します。
sql.Query('Update export_tasks set status_complete = 2 where id = ' & qexport_tasks.id)
YouTubeでの使用方法についてのすばらしい説明があります:
また、インストール時に、テンプレート内に作者からの「イースターエッグ」があり、クエストを解決する方法はリンクで説明されています。