2017-06-15 18 views
0

latin1からutf8に大きなテーブル(> 60 GB)を変換する必要があり、私はベストプラクティスを探しています。 1つの問題は、一部のテーブルにシリアル化されたPHPオブジェクトが含まれていることです。latin1テーブルをシリアル化された値でutf8に変換するにはどうすればよいですか?

私の最初のアプローチは、TEXT列をBLOBに設定し、文字セットをutf8に変換して列をTEXTに変換することでしたが、最後のステップ(不適切な文字列値: '\ xE4 \ xF6 \ XFC \ XDF "; ... ')

UTF8に適切な値を変換するための最良の戦略だろう何

+0

[serialize()](http://php.net/serialize)の出力はプレーンテキストではないことに注意してください:*これはヌルバイトを含むバイナリ文字列であり、そのように扱われる。たとえば、serialize()の出力は、通常、CHARまたはTEXTフィールドではなく、データベースのBLOBフィールドに格納する必要があります* –

答えて

0

データがlatin1のエンコーディングであることをを考えると、そのようなあなたの中äöüßとして。?たとえば、の列がCHARACTER SET latin1であるとします。http://mysql.rjweb.org/doc.php/charcoll#fixes_for_various_casesを参照してください。

ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4; 

(またはUTF8)

注:一つのテーブル内のすべてのテキスト列の文字セットを変更します。 1つのテーブルだけが表示されます。

関連する問題