人気記事

広告

記事検索

MOVION.netについて

WEB技術に関することや、気になるWEBサイトなどについて個人的なメモを残すためのブログです。

その他運営サイト

かかわっているサイト

2008年03月11日(火)

PostgreSQLのエクスポートデータをMySQLにインポートする

も参照してください。(2008/04/16追記)

最近PostgreSQLにはご無沙汰してますが、
PostgreSQLのエクスポートデータをMySQLにインポートしてみました。
かつ、微妙にPostgreSQLとMySQLのカラムが異なってる場合の手順です。

PostgreSQLの以下のテーブルのデータをエクスポートし、

  1. CREATE TABLE items (
  2. item_id SERIAL PRIMARY KEY,
  3. name VARCHAR(50),
  4. price INTEGER,
  5. color VARCHAR(20),
  6. createtime timestamp NOT NULL DEFAULT current_timestamp,
  7. delete_flag CHAR(1)
  8. );

PostgreSQLでエクスポートしたファイルをMySQLの以下のテーブルにインポートします。
status_flagカラムが追加されています。

  1. CREATE TABLE items (
  2. item_id INTEGER NOT NULL AUTO_INCREMENT,
  3. name VARCHAR(50),
  4. price INTEGER,
  5. color VARCHAR(20),
  6. status_flag INTEGER,
  7. createtime DATEMTIME
  8. delete_flag CHAR(1)
  9. );

まずは、PostgreSQLのデータをtsvファイルでエクスポートします。

  1. su postgres
  2. psql  sampledb
  3. —-
  4. sampledb=#COPY items TO ‘/home/postgres/items.tsv’;
  5. —-

次に、MySQLでインポートします。

  1. su takahashi
  2. mysql -u root -p sampledb
  3. —-
  4. mysql>LOAD DATA INFILE "/home/postgres/items.tsv" INTO TABLE items FIELDS TERMINATED BY \t (item_id,name,price,color,createtime,delete_flag);
  5. —-

もちろん、元になかったカラムのデータ(ここではstatus_flag)は入りません。
手段は他にもいろいろあると思います。
あと、うまくいかないデータもあるかもしれません。

2008年02月27日(水)

MySQLで関連テーブルの値を利用してUPDATEする

使える状況は限られますが、関連テーブルの値を利用してフィールドをアップデートする方法です。
※ MySQL バージョン 4.0.4以降でのみ有効な方法です。

「tbl」と[ref_tbl」の2つのテーブルが存在するとします。

  1. CREATE TABLE `tbl` (
  2.   `tbl_id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `subject` text,
  4.   `body` text,
  5.   `description` text,
  6.   PRIMARY KEY  (`tbl_id`)
  7. );
  8.  
  9. CREATE TABLE `ref_tbl` (
  10.   `ref_tbl_id` int(11) NOT NULL AUTO_INCREMENT,
  11.   `tbl_id` int(11) DEFAULT NULL,
  12.   `ref_value` text,
  13.   PRIMARY KEY  (`ref_tbl_id`)
  14. );

tblテーブルのdescriptionカラムに、ref_tblテーブルのref_valueカラムの値を追加する例です。

  1. UPDATE tbl,ref_tbl SET tbl.description = concat(tbl.description,‘ ‘,ref_tbl.ref_value) WHERE tbl.tbl_id = ref_tbl.tbl_id;
MySQL | 2008年02月27日(水) | コメント(0) | トラックバック(0)