DB2 データベースにクエリを実行し、出力をファイルにエクスポートするシェル スクリプトがあります。エクスポートせずに SQL ステートメントを実行すると、次のようになります。
su - myid -c 'db2 connect to mydb;db2 -v "select COL1"; db2 connect reset;'
サンプル出力
COL 1
x'20A0E2450080000'
x'50D24520E100GDS00'
x'10H0EFJ10080000'
x'50A0GH0080000'
x'80RHE1008B0000'
x'70A50E1F4008000'
x'10F329EF09BB0'
しかし、まったく同じクエリを使用して結果をエクスポートすると、次のようになります。
su - myid -c 'db2 connect to mydb;db2 -v "EXPORT TO '/tmp/query_results.out' OF DEL MODIFIED BY COLDEL: select COL1 from MYTABLE"; db2 connect reset;'
サンプル出力
hôª"
"xàÓ °á
"èÅ °á
hôª"
"é# °á
hôª"
"é« °á
hôª"
"éÅ °á
hôª"
"""ÒYá á
hôª"
"#sYá á
hôª"
これは一重引用符が原因だと思います。どちらも前に別の文字があるため、前に「\」を追加できませんでした。また、クエリ内で substr 関数を実行しようとしましたが、同じ結果が得られますが、短いだけです。私が見落としているものがあるに違いないと確信しているので、自分で試して(そして失敗して)数日間過ごした後、私はあなたたちに目を向けています。どんな助けでも大歓迎です。
*編集: 私の実際の選択ステートメントには、正しく表示される複数の列が含まれていることを追加したかっただけです。そのため、いくつかの列のうち、1 つだけが不適切なデータを表示しています。