製品をチェック

CSV Driver の30日間無償トライアルをダウンロード

 30日間の無償トライアルへ

製品の詳細

CSV/TSV Files アイコン CSV JDBC Driver 相談したい

CSV & TSV 連携のパワフルなJava アプリケーションを素早く作成して配布。

ETL ツールのEmbulk を使ってCSV データをDB にロードする方法

OSS のETL ツールEmbulk のJDBC Plugin を使って、CSV データを簡単にDB に同期する方法をご紹介します。

杉本和也
リードエンジニア

最終更新日:2023-10-13
csv ロゴ

CData

jdbc ロゴ画像
Embulk ロゴ

こんにちは!リードエンジニアの杉本です。

Embulk は、大量のデータをDB、クラウドデータストア、DWH にロードできるオープンソースETL ツールです。近頃のトレンドでは1社で複数のオンプレアプリやSaaS を使っており、データ分析にはETL ツールを使ってデータを丸ごとDB/DWH にロードしてから、分析や可視化をすることが主流になっています。Embulk にはいろいろなプラグインがあり、多様なInput とOutput 処理をサポートしています。この記事では、Embulk のJDBC Input Plugin と CData Driver for CSV を使って、CSV のデータを簡単にDB にロードする方法をご紹介します。この例ではロード先のDB にはMySQL を使います。

Embulk でCSV のデータをロード

  • CData JDBC Driver for CSV をEmbulk と同じマシンにインストールします。CData JDBC ドライバは30日間の無償トライアルが利用できるので、サイドバーからお気軽にダウンロードしてご利用ください。
  • 以下のパスにJDBC Driver がインストールされます。後ほどこのパスを使います。
    C:\Program Files\CData\CData JDBC Driver for CSV 2019J\lib\cdata.jdbc.csv.jar
  • 次に、EmbulkとCData JDBC Driverをつなぎこむための、JDBC Input Plugin をインストールします。以下のリンクからダウンロードできます。

    https://github.com/embulk/embulk-input-jdbc/tree/master/embulk-input-jdbc

    インストール用のコマンドはこちら:

    embulk gem install embulk-input-jdbc
  • 今回はロード先DB としてMySQL を使います。ほかにもSQL Server、PostgreSQL、Google BigQuery などを使うことも可能です。ロードに必要な以下のプラグインをインストールしましょう。

    https://github.com/embulk/embulk-output-jdbc/tree/master/embulk-output-mysql

    コマンドはこちら。

    embulk gem install embulk-output-mysql
  • config ファイルを作成し、CSV -> MySQL のジョブを作成します。csv-mysql.yml というファイル名で、以下の内容で作成しました。
  • in: type: jdbc driver_path: C:\Program Files\CData\CData JDBC Driver for CSV 2024J\lib\cdata.jdbc.csv.jar driver_class: cdata.jdbc.csv.CSVDriver url: jdbc:csv:DataSource=MyCSVFilesFolder; table: "Customer" out: type: mysql host: localhost database: DatabaseName user: UserId password: UserPassword table: "Customer" mode: insert
  • JDBC URL の内容は、ご利用の環境や資格情報を入力してください。

    CSV 接続プロパティの取得・設定方法

    DataSource プロパティにローカルフォルダ名を設定します。

    .csv、.tab、.txt ではない拡張子のファイルを扱う場合には、IncludeFiles 使用する拡張子をカンマ区切りで設定します。Microsoft Jet OLE DB 4.0 driver 準拠の場合にはExtended Properties を設定することができます。別の方法として、Schema.ini ファイルにファイル形式を記述することも可能です。

    CSV ファイルの削除や更新を行う場合には、UseRowNumbers をTRUE に設定します。RowNumber はテーブルKey として扱われます。

    Amazon S3 内のCSV への接続

    URI をバケットおよびフォルダに設定します。さらに、次のプロパティを設定して認証します。

    • AWSAccessKey:AWS アクセスキー(username)に設定。
    • AWSSecretKey:AWS シークレットキーに設定。

    Box 内のCSV への接続

    URI をCSV ファイルを含むフォルダへのパスに設定します。Box へ認証するには、OAuth 認証標準を使います。 認証方法については、Box への接続 を参照してください。

    Dropbox 内のCSV への接続

    URI をCSV ファイルを含むフォルダへのパスに設定します。Dropbox へ認証するには、OAuth 認証標準を使います。 認証方法については、Dropbox への接続 を参照してください。ユーザーアカウントまたはサービスアカウントで認証できます。ユーザーアカウントフローでは、以下の接続文字列で示すように、ユーザー資格情報の接続プロパティを設定する必要はありません。

    SharePoint Online SOAP 内のCSV への接続

    URI をCSV ファイルを含むドキュメントライブラリに設定します。認証するには、User、Password、およびStorageBaseURL を設定します。

    SharePoint Online REST 内のCSV への接続

    URI をCSV ファイルを含むドキュメントライブラリに設定します。StorageBaseURL は任意です。指定しない場合、ドライバーはルートドライブで動作します。 認証するには、OAuth 認証標準を使用します。

    FTP 内のCSV への接続

    URI をルートフォルダとして使用されるフォルダへのパスが付いたサーバーのアドレスに設定します。認証するには、User およびPassword を設定します。

    Google Drive 内のCSV への接続

    デスクトップアプリケーションからのGoogle への認証には、InitiateOAuth をGETANDREFRESH に設定して、接続してください。詳細はドキュメントの「Google Drive への接続」を参照してください。

  • テーブル名は取得したいテーブル名を入れます。
  • これで準備完了です。あとは「embulk run」で実行するだけです。
  • embulk run csv-mysql.yml
  • 実行後MySQL Workbenchからテーブルを確認してみると、データが取得できているはずです。

クエリ条件でフィルタリングしたデータのロード

ちなみに、上記の例ではテーブル名を直接指定しましたが、以下のようにSQL クエリを書いてもいいです。 WHERE 句で作成日や修正日を指定すれば、最新のデータだけを対象にすることも可能です。

in: type: jdbc driver_path: C:\Program Files\CData\CData JDBC Driver for CSV 2019J\lib\cdata.jdbc.csv.jar driver_class: cdata.jdbc.csv.CSVDriver url: jdbc:csv:DataSource=MyCSVFilesFolder; query: "SELECT City, TotalDue FROM Customer WHERE [RecordId] = 1" out: type: mysql host: localhost database: DatabaseName user: UserId password: UserPassword table: "Customer" mode: insert

おわりに

CData JDBC Driver for CSV をEmbulk で使うことで、CSV と連携して簡単にデータを取得できます。ぜひ、30日の無償評価版をお試しください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。