2017-04-20 4 views
0

データがlatin1文字エンコーディングで格納されているMySQLデータベースがあります。latin1文字セットでデータをエクスポートし、この文字セットを維持する方法

私はmysqlデータベース内の新しい環境ではなく、UTF8エンコーディングを完全にサポートし、これらのデータを移植する必要があります。

私は--default-文字セットオプションとして、特別なパラメータなしのmysqldumpでデータをエクスポートすることを選択した。この問題は、多くの記事を読んで、最終的には解決のためにしています。これは正しく動作するようですが、私はそれについて多くの疑問を持っています。

この問題を解決する正しい方法ですか? そうでない場合は、これらのデータをどのようにエクスポートしてインポートし、元のエンコーディングを維持できますか?

技術情報私はmysqlがバージョン5.6.33にある2つのサーバlinux Ubuntuを通してこの移行を実行する必要があります。

ご協力いただきありがとうございます。

ありがとう、Lorenzo。

+0

あなたはその後、*輸出*あなたのLatin-1データ及び*インポート*それはUTF-8にトランスコード新しいデータベースにしたいわけですか?または、デフォルト設定がUTF-8のデータベースにインポートしたいのですが、インポート後にデータをLatin1でコード化したいのですか?あなたの質問を明確にしてください。 –

+0

こんにちはO.ジョーンズ。はい、デフォルト設定がUTF-8であるデータベースにデータをインポートする必要がありますが、インポート後にデータをLatin1でコード化したいとします。ありがとう。 – Lorenzo

答えて

0

なぜ保存されている文字セットが気になりますか?私のポイントは、あなたはこの詳細を隠すことができるということです。とにかく、もしあなたがそうしなければならないなら、それをその方法で保管する方法を教えてくれるでしょう。エクスポート時

、ファイルが書き込まれるように指定のいずれかlatin1のか、UTF8またはutf8mb4。

インポートするときは、まず、インポートファイルがエンコーディングであることを宣言します。

そしてLATIN1またはUTF8またはutf8mb4する列(複数可)とテーブル(単数または複数)を宣言する。必要に応じて負荷がトランコードされます。

すべてのlatin1文字に対応するutf8/utf8mb4/UTF-8エンコーディングがあるため、のシナリオでは、が遭遇しません。

You utf8mb4ですべての新しいテーブルを作成する必要があります。サーバーはで、デフォルトはからutf8です。あなたはになります。はあなたのカラム/テーブル宣言でそれを無効にします。

カラムがlatin1の宣言持っていますが、utf8mb4と接続するためにOKです。繰り返しますが、トランスコーディングはトランスペアレントで無損失(または読み込み)になります。

関連する問題