Windows XPからWindows7に移行しています。データベースソフトウェア(Aginity Workbench)を使用しています。これにより、ユーザーは「コードスニペット」と呼ばれる一般的なクエリを保存できます。これらのスニペットはレジストリに保存されます。 HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets
レジストリエントリは次のように構成されています。「テキスト」フィールドには実際のクエリが格納されます:
.regテキストの一部は次のようになります。
Windowsレジストリエディタバージョン5.00
[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets]
[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ]
[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ\1] "Trigger" = "sf" "Text" = "select *
から
制限1000;
"" CaretPosition "= dword:00000010
[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ\10] "Trigger" = "rollnode" "Text" = "SELECT mom.varReportId、mom.nodeId、mom.rollupTypeId、roll.riskFactorGroup、roll.effectType、 mom.VAR、mom.mean FROM Moments mom、RollupTypeMapping roll WHERE mom.businessDate =(select businessDate from SysConfig)AND roll.businessDate = mom.businessDate AND mom.nodeId = 260591 AND mom.varReportId = 'DGV_BT_1D_CAD' AND roll.rollupTypeId = mom.rollupTypeId ORDER BY mom.nodeId、roll.rollupTypeId "" CaretPosition "= dword:0000018c
...そしてNotepad ++から、改行の詳細を表示します:
次の方法でスニペットを移行しようとしました。
Windowsは、レジストリが正常に更新されたことを示すメッセージをポップアップします。実際、レジストリに新しいエントリが表示されているのを確認できます。 ただし、ほとんどすべての新しいエントリに重要な「テキスト」フィールドがありません。たとえば、上からの重要なレコード「10」は次のとおりです。 (
誰かがこれを解決する方法を説明するのを手伝ってもらえますか?
テキストフィールドが含まれているように見え、W7で正しく入力されたレコードが1つだけあることに気付きました。これについて何が違うのか、なぜWindowsが違う扱いをするのか私にはわかりません。しかし、それは私に実際の例を示しており、インポートが可能であるはずです。
キャリッジリターン/新ラインです。レジストリインポーターは、EOL /改行/ CR文字を含むものをインポートすることを好みません(正常にエクスポートできたとしても)。 DID import(TO_CHARの例))であるTEXTファイルを保持する.regファイルセクションを調べることで、その理論を確認できます。キャリッジリターンがないことは間違いありません。
それを回避するには:
reg export HKEY_CURRENT_USER\MyTest Test.reg
reg save HKEY_CURRENT_USER\MyTest Test.bin
reg import Test.reg
reg restore HKEY_CURRENT_USER\MyTest Test.bin
「restore」はキーを再作成しないため、両方を実行する必要があります。そのため、エクスポート/インポートされた.Regファイルを使用してその部分を実行し、バイナリデータ(改行文字などを含む)を既存のキーに復元します。 。
警告:XPを利用できないため、これを完全にテストしていません。
問題は改行です。これらを修正すると、正常にインポートされます。
まず、改行がありません。
[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ\1] "Trigger"="sf" "Text"="select *
これは次のようになります。
[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ\1]
"Trigger"="sf"
"Text"="select * ...
次に、余分な改行があります。
"Text"="select *
from
limit 1000;
"
スニペットとしてそれを望むかもしれませんが、 MSDNのこの古い記事 によると、空白行は新しいレジストリパスの開始を示します。 Aginityには、エクスポートプロセスで失われたこれらのレジストリキーの改行をエンコードするためのスキームがあった可能性があります。とにかく、空白行を削除すると、正常にインポートされます。
投稿した.regファイルの「修正済み」バージョンは次のとおりです。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets]
[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ]
[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ\1]
"Trigger"="sf"
"Text"="select * from limit 1000;"
"CaretPosition"=dword:00000010
[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ\10]
"Trigger"="rollnode"
"Text"="SELECT mom.varReportId, mom.nodeId, mom.rollupTypeId, roll.riskFactorGroup, roll.effectType, mom.VAR, mom.mean FROM Moments mom, RollupTypeMapping roll WHERE mom.businessDate = (select businessDate from SysConfig) AND roll.businessDate = mom.businessDate AND mom.nodeId = 260591 AND mom.varReportId = 'DGV_BT_1D_CAD' AND roll.rollupTypeId = mom.rollupTypeId ORDER BY mom.nodeId, roll.rollupTypeId"
"CaretPosition"=dword:0000018c