1

最近、私は約 16,000 の Corel Paradox 4.0 データベース テーブル (私のクライアントは、主に物流上の問題から 20 年以上レガシー プラットフォームを使用しています) をより最新の形式 (つまり、CSV、SQL など) に変換する方法を模索し始めました。 PHPにはParadoxデータ処理専用のライブラリがあるため、これまでPHPを見てきましたが、変換コードの記述方法にはかなり自信があります(つまり、いくつかのファイルのオープン、クローズ、および書き込み関数を呼び出すだけです)。エラーの検出と、スクリプトの実行時に、16k の破損したファイルがエクスポートされるのを確認するためだけに実行を待つ時間がないように気を配っています。

また、ファイルを呼び出すためのロジック ループについても完全にはわかりません。プログラムに適切な拡張子を持つすべてのファイルのリストを生成させ、リストをループさせることを考えていますが、それがこのサイズのディレクトリにとって理想的かどうかはわかりません。

これは XAMPP がセットアップされたローカルの Windows 7 x64 システム (データベースはすべて内部使用) で実行されているため、純粋な PHP が最善のアイデアであるかどうかはわかりません。これを処理するには、言語の方が適している可能性があります。

洞察と支援をお寄せいただきありがとうございます。

4

2 に答える 2

1

これは間違いなくあなたを助けるには遅すぎますが、後世のために...

Corel Paradox の作業環境がある場合は、それを使用して移行を容易にすることができます。

スキーマに接続して (SCHEMA001 などのエイリアスを使用して) 構築した Oracle スキーマに Corel Paradox 9 テーブルを移動し、Paradox 内からスクリプトでこの手順を記述します。

Proc writeTable(targetTable String) errorTrapOnWarnings(Yes) try tc.open(targetTable) tc.copy(":SCHEMA001:" + targetTable) tc.close() onFail errorShow() endTry endProc

Paradox のプログラミングを増やしてこれを高度に改良することもできますが、そのアイデアは理解できます。ただし、Paradox が Oracle バージョンを作成するときに列名に二重引用符を使用していることを発見しました。これは、Oracle の列名に小文字を使用できることを意味します。これは面倒です。結果として得られるすべての列名を upper() する簡単な Oracle クエリを作成することで、これを修正しました。

この手順を次のように呼び出しました。

Var targetTable String tc TCursor endVar

method run(var eventInfo Event) targetTable = "SomeTableName" writeTable(targetTable) msgInfo("TransferData.ssl--script finished", "That's all, folks!" ) return endMethod

于 2016-09-27T15:17:55.927 に答える
0

私が推測するデータを変換するだけの場合は、一度だけ行うプロセスであり、スクリプトをコマンド スクリプトとしてローカルで実行します。そのためには、Web サイトも XAMPP も必要ありません。PHPにはライブラリがあると言う以外は、どの言語を使用するかは二次的なものです。pythonまたは他の人にはありますか?

エラー検出に関する懸念については、最初に 1 つのファイルのみでスクリプトをテストしてみませんか。その変換が成功した場合は、ループを構築し、おそらく 5 つのファイルでこれをテストできます。つまり、その数の後にプロセスを終了するカウンターがあります。それでも大丈夫なら、残りを続けることができます。ログ データを書き込んで、処理された 100 ファイルごとに結果をダンプすることもできます。このようにして、スクリプトが何かを実行しているかアイドリングしているかを確認できます。

于 2011-07-15T17:59:42.927 に答える