Почему мои данные усекаются?

Я относительно новичок в MySQL/SQL, и это мой первый пост на этом сайте, поэтому я прошу прощения, если я плохо сформулирую этот вопрос.

Я сохранил копию моего файла.xlsx как файл.csv. Я пытаюсь загрузить данные из этого CSV-файла в таблицу. Я получаю следующее сообщение об ошибке:

Пострадали 0 строк, 64 предупреждений: 1265 Данные усечены для столбца 'ptsg' в строке 1

Журнал ошибок здесь: http://pastie.org/private/byzcwjtslxpfjyhoog2g

Запрос здесь: http://pastie.org/private/tyzkbyqnuwpsafrjxcetq

Я попытался поиграть с типом данных столбца ptsg, изменив его с плавающего на десятичный без удачи.

Данные, которые вставляются в этот столбец, составляют не более 4 значащих цифр и принимают форму чего-то вроде "100" или "100,2", причем самое большее 1 число следует за десятичной дробью.

У меня есть другие плавающие столбцы, которые хорошо работают с данными, такими как "0,347". Почему мои данные усекаются?

Вот три строки данных в форме.csv:

2013Nuggets, 2013,1, Денвер,Nuggets, Денвер Наггетс, 82,19705,3145,6613,0,476,662,1704,0,388,1859,2429,0,765,791,2652,3443,1813,605,352,1157,1719,8811, 107,5
2013Knicks,2013,2, Нью-Йорк,Knicks, Нью-Йорк Knicks,82,19780,3140,6867,0,457,765,2081,0,368,1689,2087,0.809,847,2470,3317,1757,625,475,1123,1743,8734,106.5
2013Rockets,2013,3, Хьюстон, Рокетс, Houston Rockets, 82,19880,3170,6975,0,454,677,1843,0,367,1668,2083,0,801,962,2549,3511,1955,581,371,1110,1641,8685, 105,9
2013Suns,2013,4,Phoenix,Suns,Phoenix Suns,82,20005,3219,6844,0,47,701,1857,0,377,1472,1939,0,759,821,2478,3299,1945,545,357,1169,1666,8611, 105

Вывод из запроса: SHOW WARNINGS;

Примечание 1265 Данные, усеченные для столбца 'ptsg' в строке 1 Примечание 1265 Данные, усеченные для столбца 'ptsg' в строке 2 Примечание 1265 Данные, усеченные для столбца 'ptsg' в строке 3 Примечание 1265 Данные, усеченные для столбца 'ptsg' в строке 5..,

ОБНОВИТЬ:

Благодаря peterm я заметил, что неправильно использовал тип данных "десятичный" для столбца "ptsg". Я использовал DECIMAL(10,0) вместо (10,1). Мои 64 предупреждения были уменьшены до 1.

Затронуты 0 строк, 1 предупреждение: 1366 Неверное десятичное значение: ' ' для столбца 'ptsg' в строке 1246 Записи: 1334 Удалено: 0 Пропущено: 1334 Предупреждения: 1

Строка 1246 имеет бланк для ПТСГ. Мой запрос выше (в частности, ptsg = NULLIF(@vptsg,'')) должен? вставьте "NULL" для строки 1246 в столбце ptsg. Я проверил таблицу, и столбец ptsg, DECIMAL(10,1), должен позволять значения NULL, так как я оставил флажок "NN" или "Not Null" не отмеченным.

Строка 1246 выглядит так: 1955 Буллетс, 1955,9, Балтимор, Пули, Балтиморские пули,,,,,,,,,,,,,,,,,,,,,

Я делаю еще одну глупую ошибку?

1 ответ

Попробуйте добавить запятую после последней колонки в каждой строке в файле CSV. (Или просто пара строк в качестве теста.)

Я думаю, что проблема в том, что последнее поле в вашем CSV не заканчивается запятой, и это приводит к назначению NULL @vptsg,

Если файл в формате DOS, вы также можете попробовать указать

  LINES TERMINATED BY '\r\n' 
Другие вопросы по тегам