カラムを変更したPostgreSQLのエクスポートデータをMySQLにインポートする(その2)
では、 status_flagカラムが追加される場合ですが、もともとあるカラムがなくなる場合はちょっと面倒なので、以下はその1つの方法です。
PostgreSQL
-
CREATE TABLE items (
-
item_id SERIAL PRIMARY KEY,
-
name VARCHAR(50),
-
price INTEGER,
-
color VARCHAR(20),
-
createtime timestamp NOT NULL DEFAULT current_timestamp,
-
delete_flag CHAR(1)
-
);
MySQL
status_flagカラムを追加し、colorカラムは削除したいものとします。
-
CREATE TABLE items (
-
item_id INTEGER NOT NULL AUTO_INCREMENT,
-
name VARCHAR(50),
-
price INTEGER,
-
status_flag INTEGER,
-
createtime DATEMTIME
-
delete_flag CHAR(1)
-
);
どのタイミングでカラムを削除するか、まあどこでも出来るわけですが、
個人的に手っ取り早いかなぁと思う手順です。
PostgreSQLで、テーブル定義を変更しちゃったほうがよさそうなので、加工用でデータベースを作成。
-
su postgres
-
createdb sampledb_tmp
-
pg_dump sampledb > sampledb.20080416.dump
-
cat sampledb.20080416.dump | psql sampledb_tmp
-
psql sampledb_tmp
で、テーブルのカラム構成を変更したテーブル(items_tmp)を作成。
-
SELECT item_id,name,price,NULL AS status_flag,createtime,delete_flag INTO TABLE items_tmp FROM items;
そして後はエクスポート
-
COPY items_tmp TO ‘/home/postgres/items.tsv’;
次に、MySQLでインポート。
-
su takahashi
-
mysql -u root -p sampledb
-
—-
-
mysql>LOAD DATA INFILE "/home/postgres/items.tsv" INTO TABLE items FIELDS TERMINATED BY ‘\t‘;
-
—-




