LoginSignup
0
1

DBeaverでParquetファイルを読み込む

Last updated at Posted at 2023-08-06

Windows PCでParquetファイルを読み込むのって、簡単な方法がイマイチなくて困ってました。
個人の話ならpythonスクリプト書くなりなんなりで好きにやればいいわけですが…やはり簡単な方法を用意し、チームに展開できないと。

と思い度々調べていたんですが、なんとDBeaverで簡単に読み込める方法があるということをこちらのStackOverflowの回答から発見いたしました。

後から調べたところ、本質的にはDuck DBがParquetの読み込みをサポートしているということで、Duck DBをサポートしているDBクライアントツールなら何でもいけるかと。
チームに展開する際の備忘録としても、整理した内容をこちらに残します。

Duck DB インスタンスの用意

と言ってもMySQLなどのように環境の準備が別で必要だったりはしません。
DBeaverの「新しい接続」からDuckDBというのを選択すればいいだけ。

image.png

その後表示される以下の画面の「パス」には :memory: と記述するとインメモリのDBインスタンスとなります。

image.png

試しにテスト接続を押してみましょう。
初回だと恐らくこのタイミングでドライバのインストール画面が表示されると思いますが、基本OKOKと選ぶ感じで。

無事、接続成功です。
image.png

Finishのボタンを押すとDBの接続の一覧に"memory"という名前のDuckDBとの接続が追加されていることと思います。

ちなみにDuckDB公式の手順はこちら
https://duckdb.org/docs/guides/sql_editors/dbeaver

Parquetファイルを読み込む

作成された接続を右クリックで新しいSQLエディタを開きます。

image.png

そして以下のようなクエリでファイルを指定して読み込んだらもう完了!

SELECT * FROM 'parquetファイルへの絶対パス'
-- example
SELECT * FROM 'C:\Users\nantoka-user\Downloads\test.parquet'

image.png
※適当なサンプルファイルをこちらから頂きました。
https://github.com/mukunku/ParquetViewer/tree/master/src/ParquetViewer.Tests/Data

CTASでテーブルも作れる

読み込める、ということはもちろんCTASによってテーブル化できます。
大きなファイルをいちいち読み込む処理をかけるよりは、恐らくテーブルに持ってしまってその後の集計クエリなどをかけるのが良いかと。

CREATE TABLE test_p AS SELECT * FROM 'C:\Users\nantoka-user\Downloads\RANDOM_TEST_FILE1.parquet'

image.png

parquetファイルへの書き出しもできる

以下のクエリで書き込みもできるようです。テスト用データの作成などに便利ですね。

COPY {テーブル名} TO 'ファイルパス' (FORMAT 'parquet')
-- example
COPY example_table TO 'C:\Users\nantoka-user\Downloads\example.parquet' (FORMAT 'parquet')

終わりに

少し前はtimestamp型の読み込みができなかったりもしたんですが、どんどんIssue対応で機能がアップデートされています。
今できないこともじきに対応されると思われますし、自身でDBeaverやDuckDBのリポジトリにIssueを上げてみるのも良いのではないでしょうか。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1