nEST's SPACE-Blog

    コンピュータ、ミニベロ、旅行などが主なテーマの日記帳です

    iconvコマンドなど、Windows機種依存文字をLinuxへ取り込む際の対応

     

    現象

    今回の発生環境はCentOS 6.3。
    CSVファイルをPostgreSQLへ取り込もうとすると、下記のエラーで処理が止まる。
    [root@hostname ~]# su - postgres
    -bash-4.1$ psql [db_name] -f /tmp/sample.sql  --set csvfile="'/tmp/sample.csv'" 
    BEGIN
    DROP TABLE
    CREATE TABLE
    psql:/tmp/sample.sql:67: ERROR:  符号化方式"UTF8"で無効なバイトシーケンスです: 0x88
    HINT:  サーバが想定する符号化方式に合わないバイトシーケンスが存在した場合にもこのエラーが発生します。これは"client_encoding"で制御されます。
    CONTEXT:  sampleのCOPY。行番号 342

    また、取り込めなかったCSVは、下図のエラーによりgeditで開く事もできなかった。
    20150111_iconv.png


    対応

    今回取り込もうとしたCSVはWindowsで作成していたため、文字コードの問題と推察。
    そこでiconvコマンドで「SJIS→UTF-8」への文字コード変換を試みた所、下記のエラーで止まる。
    先のエラー「CONTEXT:  sampleのCOPY。行番号 342」を元にCSVの中身を見ると、どうやらWindowsの機種依存文字が原因の様子。
    [root@hostname ~]# iconv -f SJIS -t UTF8 /tmp/sample.csv >
     /tmp/sample_UTF.csv 
    iconv: 位置 1586320 で不正な入力シーケンスがありました

    下記のように、iconvコマンドでSJISでなくSHIFT_JISX0213を指定した所、無事変換できた。
    変換後のファイルはgeditで普通に開くことができ、またPostgreSQLにも正常に取り込むことができた。
    [root@hostname ~]# iconv -f SHIFT_JISX0213 -t UTF8 /tmp/sample.csv >
     /tmp/sample_UTF.csv 

    その後PostgreSQLに取り込んだデータを確認したが、やはり文字の一部(機種依存文字とか、常用漢字以外の人名の漢字)が?になっている。
    数は多くないので個別に対処するか、またはCSVファイルの時点で正規化するといった対応を行えば解決できそうだ。



    ■参考
    CP932変換表の問題が顕在化する例

    【iconv】文字コードを変換して出力する
     
     
     

    関連記事
    スポンサーサイト
    1. 2015/01/11(日) 20:48:03|
    2. Linux
    3. | トラックバック:0
    4. | コメント:0
    <<SSH公開鍵認証を設定して、SCPコマンドをシェルで自動実行させる方法 | ホーム | 雪化粧の京都へ行ってきました>>

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバック URL
    http://nestblog.blog.fc2.com/tb.php/95-fdabb668
    この記事にトラックバックする(FC2ブログユーザー)

    プロフィール

    管理人NEST

    Author:管理人NEST
    nEST's SPACEへようこそ。
    書きたい事を適当に書き連ねています。
    HPもよろしく。

    最新記事

    最新コメント

    最新トラックバック

    月別アーカイブ

    カテゴリ

    未分類 (1)
    GAME (20)
    雑記 (44)
    PostgreSQL (5)
    Windows (35)
    サイト運営 (6)
    MANGA (1)
    スマートフォン (19)
    Oracle (3)
    健康 (2)
    Linux (14)
    仮想化 (2)
    車 (7)
    ミニベロ (8)
    自転車旅行 (2)
    自転車パーツ・ウェア (1)
    自転車イベント (2)

    ブログ用カウンター

    検索フォーム

    RSSリンクの表示

    リンク

    このブログをリンクに追加する

    Powered By FC2ブログ

    今すぐブログを作ろう!

    Powered By FC2ブログ