postgreSQLからmysqlへの移行で気を付けたい点

postgreSQLからmysqlへの移行で気を付けたい点

postgresqlで、ある小さなシステムを構築準備してました。
現状あるシステムをそちらに載せ変えるという事で、
既存のデータをそのまま使いたい。

最初に確認しておけばすんだ事だけど、postgresのDBエンコードがEUCで、
変更できない事がデータの移行テストの段階でわかった。
新規DB作成も許可されていなかった。

元のシステムがUTF8なので、機種依存丸付き文字がばんばん使われている。
それをそのまま使えるようにしたいし、新しい入れ物はUTF8でないといけない。

mysqlなら新規DBも作成できるし、そもそもUTF8だったので、
急遽つくりかえることにした。

その際、種々の問題が発生したので覚え書きを残しておく。

■データ型
timestump型はdatetime型にする。
(複数カラムあるため)

■php
関数名を「pg_」から「mysql_」に置換

mysql_fetch_objectは行番号指定で取得できないので、
mysql_data_seekでポインタ位置を指定する。

■福問い合わせ
サブクエリがまず展開されるので、サブクエリに無用な結果が含まれると
総当たりとなり、膨大になる。(反応遅い)
サブクエリのSELECT文はできるだけ条件を入れた方が良い。

UPDATE a_table,(SELECT * FROM b_table)o_table SET a_table.name=o_table.oldname where a_table.code=o_table.code and o_table.num=1;

UPDATE a_table,(SELECT * FROM b_table where num=1)o_table SET a_table.name=o_table.oldname where a_table.code=o_table.code;

■mysqlでは正規表現による置換が出来ない
これは面倒だったし、今回はpostgresに持ってって処理した。
ある特定の文字に挟まれた数値データをとりだしたかっただけなので、
それでいけたけれど、文字コードに影響される様な文字列だったらそれはできないし、
ステップ踏むしかないかな。
phpでREGEXPとREPLACEを使って置換する方法をとるとか。

以上、私のメモ書き。
素人なので表現や方法が間違ってるかもしれません。


昔は丸付き文字なんか、利用者の方に制限させて、
文字化けしたら利用者のせいにするとか普通だったけど、
今は丸付き文字も機種依存文字も使うもんね。
私は今も使わないけど。

トラックバック(0)

このブログ記事を参照しているブログ一覧: postgreSQLからmysqlへの移行で気を付けたい点

このブログ記事に対するトラックバックURL: http://www.site-index.net/blog/mt-tb.cgi/759

コメントする

ウェブページ

Powered by Movable Type 4.13

このブログ記事について

このページは、tairaが2014年5月 4日 06:17に書いたブログ記事です。

ひとつ前のブログ記事は「サーバの引っ越し手順の覚え書き」です。

次のブログ記事は「成長痛」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。