SQL ServerをPostgreSQLに移行

2013-07-20

気付いたらもう半年近く経っているのですな(/_\*)
去年年末から、最終的には今年の3月末まで対応した某所の SQL Server を PostgreSQL に移行するという作業。
とにかく難航したのだが、ホントよく終わったよな、、、とまずは自画自賛しておくw

まず最初に、いわゆる移行ツール的なものがあるかどうか、、、を調査し、あるにはあったが使えない、もしくは有料の壁に阻まれ、自力で移行することが確定。
もちろん、最初からそのつもりで見積もったのでこれは全然OK(^_^;

次に、unixODBC、FreeTDS をインストール。
これも簡単だったのだが、インストール後、実際に SQL Server に接続するところまでがなかなか苦戦した。
そもそも unixODBC、FreeTDS あたりのものが何をするものかきちんと理解していなかったからな。。。

なんとか接続が出来たものの、SQL Server で言うところの tsql は微妙に使いづらく、作業効率がかなり悪い。
かと言って、Perl Script で取得したデータもあてに出来ないし、、、ということで、検証作業が難航。
それでも、とりあえず全データと思われるものを取得するところまではサクッと行けたのだが、SQL Server 特有?の命名方式?や、Access 経由で使うという条件があるため、それらのテーブルの名称を変更できない、、、といったところで、作業難易度が一気にアップ!!
ホント、どうでもいいような細かい点を暫定に次ぐ暫定処置で対応することで、ようやく取得した全データを Access から読めるところまで持って行けた。

そして、最後の難関。
データ検証。
当然のように発生する文字化け。
膨大なデータ量なので、ある程度の文字化けは手動で対応しようと思っていたが、1000 件を超えてしまうと、手動でいちいち直していくわけにもいかん(-_-#
というよりも、そもそもこれだけ大量に文字化けが起きるということは、相当致命的な問題が根本的にあるはず、、、、ということで、一気に泥臭い作業に変化。
現象としては、文字列が途中で切れてしまっている、、、ように見え、それは Linux サーバ上から unixODBC、FreeTDS 経由で tsql を叩いた時に既に発生している。
ということで、unixODBC、FreeTDS、DBD::ODBC あたりのソースコードを片っ端から解析するはめに(>_<)
そして、コードを調べていて、コンパイルオプションがいくつかあることが判明し、それらを適切に設定することにより、一部は問題が解決!!
しかし、残りの3割くらいは未だに文字化けが。。。。

結局残りの文字化けについては、以前移行した際にミスったようで、もともと文字化けというか、文字が途中で切れてしまっているということが判明( ̄□ ̄;)!!
なんじゃそりゃ(-_-#
そりゃ、こっちじゃ分からないはずだよ~(>_<)

ということで、一件落着。
といった作業があり、これらを全てメモにまとめる予定だったのだが、、、、もう二度と関連しなさそうな部類の情報だし、かなりマニアックで今さら昔の情報を見返すのも面倒だし、、、、ということで、ここに経緯を書いて終わりとしますw
SQL Server なんて使うのはやめましょう( ̄ー ̄)
というか、Access を使うのはやめて欲しい(^_^;
Access はまだ使われているので油断できないが。。。。


2013
6