こんにちは。CData Software Japan リードエンジニアの杉本です。
CData Driver のラインナップの中でも、結構ユーザーニーズが多いCSV Driverについて、Tipsをお伝えしたいと思います。
皆さんもご存知の通り、CSVは結構仕様上のゆらぎが多く、連携プログラム開発でも地味に悩まれる方が多いのではないかなーと思います。
https://www.cdata.com/jp/drivers/csv/odbc/
CData CSV Driver では、そんなCSV ファイルの読み取りに対して、様々な接続プロパティを提供することで、柔軟に読み取りができるようにサポートしています。
そんな CSV Driver で最近日本語のカラム・値が入っているものをうまく読み取りたいのだけど、どうすればいいでしょうか? といったお問い合わせがありましたので、今回はその解決方法をご紹介したいと思います。
対象のファイル
対象のファイルは内閣府の「国民の祝日について」でダウンロードできるCSVです。
国民の祝日について - 内閣府
以下のような感じで、ダブルクオーテーション無し、カンマ区切り、かつ日本語ラベル
エンコーディングがS-JIS形式のファイルでした。
これを素直にCData CSV Driver(画面はJDBCで接続している時のもの)で読み取ろうとすると、以下のようにCData CSV Driver がカラム構成を識別できずエラーになってしまいます。
# 解決方法
実は隠しプロパティとして提供されている「charset=Shift-JIS」を設定してもらうことで、対応することが可能です。
JDBC で接続する場合は以下のように設定できますし
jdbc:csv:Data Source=C:\Testdata\CSV\syukujitsu_download.csv;charset=Shift-JIS;
Excel Add-in や ODBC Driverで接続する場合は、Otherというところに、このプロパティを指定することで解決できます。
これで、正常に取得できるようになります。
余談ですがCData CSV Driver であれば、以下のようにCSVに対してWhere Like検索みたいなことも実施可能です。
また、エンバカデロ・テクノロジーズの井之上さんにも「Delphi / C++Builder」でCSVを扱う方法として、Enterprise Connectors CSV Component を以下のBlogでご紹介頂いています!
Delphi / C++Builder でCSVファイルをスマートに使う
CSVは様々なアプリケーションから扱うシチュエーションが多いと思いますので、是非参考にしてみてください!
おわりに
上記以外にもCSV Driverは様々な機能をサポートしています。
TAB区切りやInsert・Updateの方法などもありますので、検討や試用している中で不明な点があれば、お気軽にサポートフォームまでお問い合わせいただければと思います。
CData テクニカルサポート URL
https://www.cdata.com/jp/support/submit.aspx
関連コンテンツ