Hyper-VのゲストOS上に、Windows Server 2008 R2 + MySQL5.1を利用してDBを構築しています。
今回このMySQL環境に、MSSQL2005よりデータを移行したいと思っていますが上手く移行できないデータがありご相談いたします。
■相談点
SQL Server 2005からの移行データにMAC外字の文字コード(0x8540~0x889E)が保存されおり、
そのデータをMySQL Migration Toolkit(Version1.1.17)を利用し移行すると異なる文字コードへ変換されてしまう。
例:0x8646 → 0x8145
■MySQL環境
MySQL5.1の設定、および移行先のテーブル作成構文は下記の様にしています。
[mysql]
default-character-set=cp932
[mysqld]
character-set-server=cp932
テーブルCreateSQL構文
CREATE TABLE `TBL01` (
`ID` int(10) NOT NULL,
`NAME` char(40) COLLATE cp932_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp932 COLLATE=cp932_bin'
■MySQL Migration Toolkitの指定
・MSSQL接続方法
jdbc:mysql://192.168.1.1:3306/?user=test&password=test&useServerPrepStmts=false&characterEncoding=cp932
・MySQL接続方法
jdbc:mysql://192.168.1.2:3306/?user=test&password=test&useServerPrepStmts=false&characterEncoding=cp932
対処方法をご存じの方がいらっしゃいましたら、教えて頂けないでしょうか。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
私はMacintosh環境については詳しくないので勘違いがあるかもしれませんのでご注意ください。
JDBC の URL のエンコーディングは、 cp932 ではなく MS932 か、 Windows-31J (Windows 日本語(Microsoft社のShift_JIS))を指定します。
(CP932 は IBM OS/2 日本語(IBM社のShift_JIS)の様です。CP932をもとに MS932 へと拡張された(NEC拡張文字の追加)のではと思います。)
また、Java は Macintosh 日本語(Apple社のShift_JIS(X-MAC-JAPANESE))をサポートしていないようです。
※誤った指定でもそれなりにうまく動作したのは、Windows 日本語環境ではデフォルトがMS932なので、CP932の指定が無視されたのではないかと思います。
http://docs.oracle.com/javase/7/docs/technotes/g …
http://java.sun.com/javase/ja/6/docs/ja/technote …
また、MySQLがサポートするCP932は、Windows-31JですのでApple社のShift_JISはサポートされていない様です。
http://dev.mysql.com/doc/refman/5.1/ja/charset-a …
http://dev.mysql.com/doc/refman/5.1/ja/charset-c …
以上のことからMySQL Migration Toolkitを使用すると文字化けが発生したと考えられます。
よってSQL Server のデータを文字化けを回避できる他のツールで取得して、MySQLの側も文字コードの自動変換を回避するようにするとかになるかと思います。
[mysqld]
character-set-server=cp932
skip-character-set-client-handshake
なお、Apple社のShift_JISについてはこちらに http://ja.wikipedia.org/wiki/MacJapanese
もあるように、Apple社らしい独創性(非互換性)を感じます。Microsoft社とは対照的ですね。
OrangeCup150さん
ご回答へのご連絡が遅れ申し訳ございません。
ご回答いただきました内容、大変勉強になりました。
特にJavaの仕様部分、情報ありがとうございます。
他のツールを検討してみたいと思います。
また、ご指摘のあったCP932の文字コードについて、調べてみました。
MySQLでcp932を指定した場合、Javaエンコード名は「Cp932 or MS932」として動作してくれるようなのでMac外字部分以外は変換できているのだと思いました。
参考URL:http://dev.mysql.com/doc/refman/5.1/ja/connector …
情報ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
存在しているファイルがロード...
-
MySQLカラム名は日本語と英数字...
-
SQL Server のキャラクターセッ...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
MYSQLのデータに「;」を入力
-
エクセルで連勤チェックをした...
-
C言語で変数の内容をINSERTする...
-
MySQL sleep が溜まる
-
2023年10月25日現在のMAMP ...
-
RPMのmysqlとmysql-serverの違い
-
ERROR 1045 (28000) (using pas...
-
ODP.NETのバージョン確認
-
MYSQLサービス停止時にWindows...
-
参考書に従って入力したつもり...
-
my.cnf と my.ini の違い
-
泣きそうです>< PHPでSQLite3が...
-
バッチファイルでTRUNCATE TABLE
-
MySQLのテーブル作成でハイフン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLカラム名は日本語と英数字...
-
SQL Server のキャラクターセッ...
-
SQLで日本語データを入力したい...
-
文字コードMS932(Windows-31J...
-
日本語TSVファイルのLOAD DATA ...
-
PHP経由でMYSQLに全角文字を格...
-
MySQL 日本語表示 日本語入力...
-
MySQLの日本語LIKE検索について
-
急に文字化けを起こすようにな...
-
テキストファイルからのデータ...
-
存在しているファイルがロード...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
ODP.NETのバージョン確認
-
旧filemakerで和暦(令和など)...
-
ERROR 1045 (28000) (using pas...
-
副問合せにLIKE文を使う方法は...
-
INT型は金額の型に使用するべき...
-
like句を使って日本語を検索す...
-
postgreSQLのデータ型
おすすめ情報