RELATIONAL DATASET REPOSITORYのデータセットをPostgreSQLに取り込む
Relational Dataset Repositoryで、リレーショナルデータベース用のデータセットが公開されている。データセットによっては100万件ちかくのデータが入っているので、クエリ最適化などの練習に使えそう。
下記のデータセットをPostgresSQLに取り込んでみることにした。
https://relational.fit.cvut.cz/dataset/Financial
やること
データは公開されたMySQLのサーバーに入っていて、そこから適宜dumpしてね、という形で配布されている。このため、MySQLに保存されているデータをどうにかしてPostgreSQLに取り込む必要がある。
手順
下記の手順でデータを取り込む。
- mariadbをインストール
- pgloaderをインストール
- postgresのパスワード方式をmd5にする
- postgresに取り込み用のデータベースとユーザーを作成する
- pgloaderでデータを取り込む
mariadbをインストール
配布元のサーバーはmariadbで動いているので、互換性の問題が起きにくいようにmariadbをインストールする。
sudo apt install mariadb-client-10.3
pgloaderをインストール
MySQLのサーバーからPostgreSQLのサーバーに直接データを取り込むツール、pgloader をインストールする。
sudo apt install pgloader
postgresのパスワード方式をmd5にする
最近のpostgresは、デフォルトで暗号化方式がscram-sha-256になっているが、pgloaderは対応していない。md5で暗号化するように設定して認証できるようにする。
- postgresql.confに
password_encryption = md5
を追記する - pg_hba.confでscram-sha-256をmd5に書き換える
- postgresを再起動
postgresに取り込み用のデータベースとユーザーを作成する
createdb financial createuser dump
superuserなユーザーでpsqlを起動
ALTER ROLE dump WITH PASSWORD 'dump';
pgloaderでデータを取り込む
pgloader mysql://guest:relational@relational.fit.cvut.cz/financial postgresql://dump:dump@localhost/financial
参考資料
便利なリレーショナルデータベースのオープンデータセット:RELATIONAL DATASET REPOSITORY – SHIN総研
pgloader 10 fell through ECASE expression · Issue #1183 · dimitri/pgloader · GitHub