こんにちは、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にしておくなどがおススメですね。
それでは皆さんも良いテクニカルライフを!!