1

latin1_swedish_ci照合を使用するすべてのテーブルを持つ非常に大きな InnoDB MySQL 5.1 データベースがあります。ISO-8859-1 にあるはずのすべてのデータを UTF-8 に変換したいと考えています。照合順序を変更すると、どの程度効果がありutf8_general_ciますか?

データを変換して新しいテーブルに挿入するスクリプトを作成したほうがよいでしょうか? 明らかに、私たちの目標は、再エンコード時にデータが失われるリスクを最小限に抑えることです。

編集:アクセント付きの文字、£記号などがあります.

4

2 に答える 2

2

データが現在ラテン文字のみを使用しており、文字セットと照合順序を UTF-8 に変更して、将来 UTF-8 データを追加できるようにする場合は、文字セットと照合順序を変更するだけで問題ありません。もちろん、最初にテーブルのコピーでそれを行います。

于 2012-07-17T16:03:06.113 に答える
1

約1週間前、同じタスクを実行する必要がありました(の問題ö, ä, å

  1. を作成しましたdump.sql
  2. CHARSET=latin1 すべて検索して CHARSET=utf8( 内の) に置き換えましたdump.sql
  3. COLLATE=latin1_swedish_ci すべて検索して COLLATE=utf8_unicode_ci( 内の) に置き換えましたdump.sql
  4. 照合順序で新しいデータベースを作成しましたutf8_unicode_ci
  5. を輸入しましたdump.sql
  6. データベースcharsetを変更しましたalter database MY_DB charset=utf8;

そしてそれは完璧に機能しました

注: Mike Brant の発言の後、特に必要なフィールドを手動で検索して置き換える方がよいと思います。ALTERまたは、.を必要とせずに各フィールドに単純に使用できますdump.sql。ほとんどのフィールドを utf エンコードする必要があったため、私の場合はあまり変化しませんでした。

于 2012-07-17T16:01:22.740 に答える