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 の問題ではありません。