2008年04月18日(金)
〇データベース一覧を確認する
MySQL
PostgreSQL
※シェルで実行
〇 接続しているデータベースのテーブル一覧を確認する
MySQL
PostgreSQL
〇テーブル(items)のカラムを確認する
MySQL
PostgreSQL
〇実行されているプロセス一覧を確認する
MySQL
PostgreSQL
-
SELECT * FROM pg_stat_activity;
〇文字コードを確認する
MySQL
-
SHOW VARIABLES LIKE "char%";
PostgreSQL
※シェルで実行
で、確認してください。
2008年04月16日(水)
では、 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‘;
-
—-
2008年04月6日(日)
eclipseのデータベースモデリングツールclay
http://www.azzurri.co.jp/clay/index.jsp

無償版(Core Edition)と有償版(Pro Edition)があります。
有償版は、商用DBへの対応や、DB定義書出力、ダイアグラムが印刷などが可能になるみたい。
eclipse内でちゃちゃっと、DBのモデリングをして、SQL文を出力出来るので、個人的に利用してます。
リバースエンジニアリングしたりするには、JDBCドライバが必要。
おっと、あとGEF(ソフトウェアアップデートからインストール出来ると思うけど)も必要です。
ダイアグラムがIDEF1X表記でもIE表記でもないので、
ちょっと残念ですが、個人的に使うには十分です。

SQL文生成の際のオプションもいろいろあるし、
もちろん、インデックスも個別に編集出来るので、ある程度は好みの感じでSQL文が作れるのではないでしょうか。
2008年03月11日(火)
も参照してください。(2008/04/16追記)
最近PostgreSQLにはご無沙汰してますが、
PostgreSQLのエクスポートデータをMySQLにインポートしてみました。
かつ、微妙にPostgreSQLとMySQLのカラムが異なってる場合の手順です。
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)
-
);
PostgreSQLでエクスポートしたファイルをMySQLの以下のテーブルにインポートします。
status_flagカラムが追加されています。
-
CREATE TABLE items (
-
item_id INTEGER NOT NULL AUTO_INCREMENT,
-
name VARCHAR(50),
-
price INTEGER,
-
color VARCHAR(20),
-
status_flag INTEGER,
-
createtime DATEMTIME
-
delete_flag CHAR(1)
-
);
まずは、PostgreSQLのデータをtsvファイルでエクスポートします。
-
su postgres
-
psql sampledb
-
—-
-
sampledb=#COPY items 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‘ (item_id,name,price,color,createtime,delete_flag);
-
—-
もちろん、元になかったカラムのデータ(ここではstatus_flag)は入りません。
手段は他にもいろいろあると思います。
あと、うまくいかないデータもあるかもしれません。