オンプレDBからクラウドDBへの簡単なデータ移行をやってみた
移行といってもテーブルを1個だけオンプレDBからエクスポートして
クラウドにインポートするという実にシンプルなものです。
まずはテーブルをエクスポート
sqlplusでオンプレDBに接続し普通にspoolします
spool "C:\絶対パス\output_tablename.csv"
select * from [tablename];
spool off
<補足>
sqlplusの操作が超初心者だったので下記のようなことをいろいろ知らべて
設定してあります。
set linesize 500; //横一列に表示させる最大文字数
set pagesize 10000; //ページ間のセパレータを非表示
set colsep ',' //カラム間を,で区切る
set feedback off //確認文を表示させない
set echo off //コンソールメッセージの非表示
set trimspool on //各行の右端のスペースを削除する指定
column [columnname] format 0.99 //整数部分が0の小数は0抜けで表示されてしまうのを防ぐ
これでcsvを出力しました。
----------------------------------
クラウド側に同一テーブルを作成
次にインポートする前に事前にクラウド側に入れるテーブルを作成しておく必要があります。
楽な方法としてSQLDeveloperにDDLを作成してもらう方法をとりました。
オンプレDBでSQLDeveloperを開き移行したいテーブルで右クリック
「クイックDDL」>「ワークシートに保存」
とすると同じテーブルを作成するDDLを取得できる。
クラウドDB側にsqlplusで接続し、
上記で取得したDDLを実行し同じテーブルを作成する。
----------------------------------
クラウド側にデータインポート
まずはインポート用のctlを作成します。
作成する場所はどこでもいいですが、わかりやすく「C:\絶対パス\import.ctl」と作成しましょう。
import.ctlの中身はこれ
LOAD DATA
INFILE 'C:\絶対パス\output_tablename.csv'
APPEND
INTO TABLE LIQUID
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(column1,column2,column3,......)
いよいよインポート実行です。
sqlplusで
sqlldr [username]/[password]@[DBname] control=C:\絶対パス\import.ctl
インポートがうまくいけば下記のように返ってくると思います。