SQL Load Data Специальные символы - PullRequest
3 голосов
/ 27 июля 2010

Я пытаюсь импортировать данные в SQL из CSV в PHP My Admin, поэтому это может быть проблема PHP My Admin. У меня проблема в том, что некоторые столбцы используют специальные символы, например:

"Adán, Antonio"

Заканчивается как "Ad".

Структура столбца следующая:

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, который уже есть.

Есть идеи, как еще я могу предотвратить это?


UPDATE

Вставка в базу данных - это хорошо, так что я предполагаю, что это не связано с моей структурой таблицы. Похоже, что это конкретно связано с импортом из CSV.

Это запрос загрузки данных, сгенерированный PHP My Admin

LOAD DATA LOCAL INFILE 'C:\\Windows\\Temp\\php21E4.tmp' INTO TABLE `players` FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'.

РЕШЕНИЕ

Я обнаружил проблему. Мой CSV был закодирован с помощью кодировки Западной Европы. После недолгой разборки конвертирования в UTF8 он импортировался просто отлично. Совсем не проблема SQL.

1 Ответ

0 голосов
/ 27 июля 2010

Можете ли вы отследить, где происходит усечение, вполне возможно, что проблема вообще не в вашей БД.

Попробуйте выполнить простую вставку в таблицу БД из командной строки со специальными символами и посмотрите, удастся ли это.

Затем попробуйте зарегистрировать различные шаги в импорте, чтобы отследить, где возникла проблема...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...