sleeping_trout
@sleeping_trout

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

SQLserver上のImage型データをPostgreに移行する方法について

解決したいこと

初心者です。
SQLserver上のHexで格納されているImage型のデータを、画像のままPostgreに移行する方法を教えていただきたいです。
移行後はテキストとしてしか認識されず、画像データとして読み込めなくなってしまいます。

以下、詳しい経緯です。

SQLserver上のデータをPostgreに移行する作業を行っています。
手順としては、
1.BCPコマンドを使用してSQLserverからCSV形式でエクスポート
2.Postgre上でCOPYコマンドを使用して当該ファイルをインポート
という流れで行っています。

SQLserver上では16進数のImage型で格納されています。
Postgre上ではbytea型に格納する予定です。

自分で試したこと

最初の実行時に16進数がバイナリ型に変換されてしまっていたので、エスケープ処理を実装して16進数のまま移行されるようにしました。
しかし、SQLserver上では画像データとして読み込めるデータが、移行後はテキストとして認識されてしまい画像認識されません。

周囲にも知識のある人間がおらず、こちらで質問させていただきます。
初学者のため、情報や聞き方等不足ありましたら申し訳ありません。
よろしくお願いいたします。

0

1Answer

・お金が無い場合
 Linux上で動作するコンバータを利用してみては?
 https://pgloader.readthedocs.io/en/latest/
 Windows上でもDockerかWSL2で対処できるという報告はある模様です。

・お金があって時間が無い場合
 以下のリンクのExtension Linksに列挙されている有料コンバータを検討する
 https://wiki.postgresql.org/wiki/Microsoft_SQL_Server_to_PostgreSQL_Migration_by_Ian_Harding

1Like

Your answer might help someone💌