文字列値にカンマを含むデータをcsvファイルに書き込む方法

文字列値にカンマを含むデータをcsvファイルに書き込む方法

デフォルトの選択クエリを使用してデータベースにアクセスし、結果の出力をファイルに書き込む必要があります。 sqlcmdを使用してクエリを実行し、結果を出力csvファイルに書き込みます。

Excelでこのファイルを開こうとすると、途中にカンマを含むレコードが新しい列として表示されます。

この問題をどのように克服できますか?シェルスクリプトでこれを処理できますか?

答え1

必要に関係なく、少なくともデータベース内のすべてのフィールドを参照できます。これはまだ有効なCSVです。 Azureについて知りません。 Oracleでは、CHR(decimal_code)を使用して特殊文字を定義します。区切り記号とデータをリンクします。したがって、SQLのフィールド区切り文字は次のようになります|| CHR(34) CHR(44) CHR(34) ||(これが私がawkでクエリを作成するために使用した理由です)。

残念なことは、データに二重引用符を含めることができることです。引用符付きフィールドを2倍にする必要があるため、Said "Hello".:::::"Said ""Hello""."となり、これはより困難です。

最大1つのフィールドにカンマを含めることができる問題をawkで修正しました。フィールド4は、カンマを含むことができるフィールドであると仮定します。フィールド1-3と5-NFを切り取り、フィールド4を完全に引用してから、行を正しいCSVに再結合することができます。これが役立つ場合は、コメントしてください。

CSVフィールドに改行を含めることもできます。これにより、各行の列が混乱する可能性があります。この問題はawkでも解決できます。改行は引用符付きのフィールドでのみ機能するため、奇数の引用符付きの行はデータフィールドの真ん中にある必要があるため、偶数の引用符を取得するまで先読みする必要があります。

関連情報