2007年11月26日月曜日

phpMyAdminでExcelが吐き出したcsvを読み込ませるパラメータ

案.1 Excelの吐き出したcsvをそのまま利用する。
文字コード:sjis 改行:CR+LF

ファイルの文字セット sjis
部分インポート check

LOAD DATAするCSVにチェック
フィールドの区切り記号  ,
フィールドの囲み記号 Null
フィールドのエスケープ記号 Null
行の終端記号 \r\n
 カラム名 Null

LOCALキーワードを使用する。 check

none EUC SJIS エンコーディングに変換する。 noneにcheck
全角カナに変換する。 check無し

化け化けですね。

案.2 Excelの吐き出したcsvをエディタにて文字コードを変換する。
文字コード:UTF-8 改行:LFとして読み込む

ファイルの文字セット utf-8
部分インポート check

LOAD DATAするCSVにチェック
フィールドの区切り記号  ,
フィールドの囲み記号 Null
フィールドのエスケープ記号 \
行の終端記号 \n
 カラム名 Null

LOCALキーワードを使用する。 check

none EUC SJIS エンコーディングに変換する。 noneにcheck
全角カナに変換する。 check無し

因みに、この操作は

LOAD DATA LOCAL INFILE '/tmp/php1TFwt1' INTO TABLE `company_a` FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\n'

と変換される。特殊文字以外は通りますね。

案.3 Excelの吐き出したcsvをエディタにて文字コードを変換する。
文字コード:UTF-8 改行:LFとして読み込み、sjisに変換する。

ファイルの文字セット utf-8
部分インポート check

LOAD DATAするCSVにチェック
フィールドの区切り記号  ,
フィールドの囲み記号 Null
フィールドのエスケープ記号 \
行の終端記号 \n
 カラム名 Null

LOCALキーワードを使用する。 check

none EUC SJIS エンコーディングに変換する。 SJISにcheck
全角カナに変換する。 check無し

因みに、この操作は

特殊文字以外は通り、SJISで格納されてるのに、ODBC経由Access,Excelでは文字化けします。
なんで?







MySQL4.0リファレンスマニュアル6.4.8. LOAD DATA INFILE 構文より
LOCAL が指定されていると、クライアントホスト上のクライアントプログラムによってファイルが読み取られ、サーバに送られます。LOCAL が指定されていない場合、ファイルはサーバホスト上に存在しなければならず、サーバによって直接読み取られなければなりません(LOCAL は MySQL バージョン 3.22.6 以降で使用できます)。

0 件のコメント: