tosumalog~ IT的備忘とパパ的備忘を書き綴ります ~

tosumalog

~ IT的備忘とパパ的備忘を書き綴ります ~

PostgreSQLでDBリンク(dblink)の使い方

こんにちは、tosumaです。


PostgreSQLの新しい環境を作成した際に
当然データの移行が伴いますが小さいテーブルなんかだと
SQLエディタなどで軽くコピペできますが大きなテーブルだったり改行コードを含むような
データの移行が面倒だったのでDBリンクを使ってサクッと移行しました。

3ステップでかなり簡単なので手順を共有します、ご参考にどうぞ。
(PostgreSQL 14の手順なので別バージョンの場合は適時訂正ください)

1|contribモジュールのインストール

まずはcontribモジュールをインストールします。
(バージョン13の場合は14の部分を13に変えるなどして下さい)

$ sudo dnf install postgresql14-contrib

2|extensionの作成

次にDBにログインしてextensionを作成します。

$ sudo su - postgres
$ psql
  postgres=# create extension dblink;

上記コマンド後に「CREATE EXTENSION」と表示されればOKです。

3|SQLの作成~実行

最後にSQLを作成して実行します。
少しだけ面倒なのがDBリンクを用いたSQLを書く場合には戻り値の型を
明示的に指定する必要があります。

例として以下の[entry]テーブルを移行します

insert into
    entry
SELECT
    *
FROM
    dblink
        ('host=<移行元IP> dbname=<移行元DB名> user=<移行元ユーザー> password=<移行元パスワード>','select * from entry')
    AS
        (
        tag_id varchar,
        twitter_id varchar,
        target_id varchar,
        pm_class int,
        twitter_name varchar,
        follow_flg varchar,
        clear_time varchar,
        assign_character1 varchar,
        assign_character2 varchar,
        assign_character3 varchar,
        assign_character4 varchar,
        assign_character5 varchar,
        twitter_date date,
        twitter_url varchar,
        twitter_lang varchar,
        create_date date,
        media_url_1 varchar,
        media_url_2 varchar,
        media_url_3 varchar,
        media_url_4 varchar,
        youtube_url varchar
        )

こんな感じですね。
何度も実行する場合にはViewにしておくなどがおススメですね。



それでは皆さんも良いテクニカルライフを!!


お読み頂き有難うございました。