1

db2エクスポートを使用してデータをCSVファイルに保存しています。

最終的には、SQLを取り込んで実行し、エクスポートするスクリプトを作成する必要があります。ほとんどすべてが整っていますが、特定のクエリによってエラーが発生します。

現在、次の2つのケースでエラーが発生します。

1-ワイルドカードを使用します。シェル拡張はこれを殺します。

SQL全体を'で囲むとそれが修正されるようですが、ベストプラクティスは何ですか?私が修正していないいくつかのエッジケースがあるようです。

2-where句で文字列を使用できません:

bash-3.00$ db2 export to /tmp/text of DEL 'select * from SCHEMA.TABLE where COL='STRING''
SQL3022N  An SQL error "-206" occurred while processing the SELECT string in
the Action String parameter.

SQL0206N  "STRING" is not valid in the context where it is used.

特定の列に変更して選択し、SQL全体から''を削除しても、それは変更されません。

何か案は?

ありがとう、

アレックス

4

2 に答える 2

3

@mruは正しい方向に進んでいますが、実際の例の方が役立つと思います。

 db2 "export to /tmp/text of DEL select * from SCHEMA.TABLE where COL='STRING' "

ここで重要な要素は、SQL selectが引用符で囲まれておらず、文字列リテラルの内容だけが引用されていることです。

コマンドラインシェルでうまく機能しない文字をエスケープする別の方法は次のとおりです。

db2 export to /tmp/text of DEL select \* from SCHEMA.TABLE where COL=\'STRING\'
于 2012-05-15T17:21:45.877 に答える
0

クエリ文字列内の一重引用符は、引用符を閉じるときにエスケープする必要があります。一重引用符で囲まれた文字列内で一重引用符をエスケープする方法をご覧ください 。解決策。しかし、あなたの場合、引用には一重引用符ではなく二重引用符を使用するだけで十分だと思います。

于 2012-05-15T17:12:36.913 に答える