0

mysql から postgres にデータを挿入すると、次のエラーが発生します。

PG::Error: ERROR:  invalid byte sequence for encoding "UTF8": 0xe073
: INSERT INTO "places" ("accent_city", "city", "country", "created_at", "latitude", "longitude", "region", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id"

このファイルworldcitiespop.txtをレーキ タスクとして PG データベースに挿入したい

namespace :places_db do
    desc "save cities in database"
    task save_places: :environment do
        File.open("lib/city_name/worldcitiespop.txt", "r").each_line do |row|
            row = row.force_encoding('ISO-8859-1').split(',')
            Place.create(country: row[0], city: row[1], accent_city: row[2], region: row[3], latitude: row[5], longitude: row[6])
        end 
    end
end
4

1 に答える 1

1

ファイルは ISO-8859-1 でエンコードされているため、最も簡単な方法は、インポートの直前に次の SQL クエリを発行して、データベースに変換を行わせることです。

SET client_encoding=latin1;

インポート後に以前のエンコーディングに戻すには:

SET client_encoding=default;

この設定は、現在のセッションにのみ影響します。

于 2012-10-20T11:08:00.750 に答える