3

PHP My Admin の CSV から SQL にデータをインポートしようとしているので、PHP My Admin の問題である可能性があります。私が抱えている問題は、一部の列で特殊文字が使用されていることです。たとえば、次のようになります。

「アダン、アントニオ」

単なる「広告」になってしまいます。

列の構造は次のとおりです。

CREATE TABLE IF NOT EXISTS `players` (
  `player_name` varchar(255) COLLATE utf8 NOT NULL,
  `player_nation` varchar(255) CHARACTER SET utf8 NOT NULL,
  `player_club` varchar(255) CHARACTER SET utf8 NOT NULL,
  `player_position` varchar(255) CHARACTER SET utf8 NOT NULL,
  `player_age` tinyint(2) NOT NULL,
  `player_dob` varchar(32) CHARACTER SET utf8 NOT NULL,
  `player_based` varchar(255) CHARACTER SET utf8 NOT NULL,
  `player_id` int(10) unsigned NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8;

私はそれが文字セットに関係していると推測していますが、mysql.comはテーブルを文字セットutf8に変更することを提案しているだけです。

他にこれを防ぐ方法はありますか?


アップデート

データベースへの挿入は問題ないので、テーブル構造とは関係ないと思います。特にCSVからのインポートに関係しているようです。

これは、PHP My Admin によって生成されたロード データのクエリです。

LOAD DATA LOCAL INFILE 'C:\\Windows\\Temp\\php21E4.tmp' INTO TABLE `players` FIELDS TERMINATED BY ';' '"' で囲まれ、'\\' でエスケープされ、'\r\n' で終了する行。

解決

問題を発見しました。私の CSV は、西ヨーロッパの文字セットでエンコードされていました。少しいじってUTF8に変換した後、問題なくインポートされました。SQL の問題ではありません。

4

1 に答える 1

0

切り捨てが発生している場所を追跡できますか? 問題が DB にまったくない可能性は十分にあります。

特殊文字を使用してコマンド ラインから DB テーブルに簡単に挿入してみて、成功するかどうかを確認してください。

次に、インポートのさまざまな手順をログに記録して、問題が発生した場所を追跡してみてください...

于 2010-07-26T23:53:52.460 に答える