Mysql Загрузить файл Ошибка загрузки неточных данных - PullRequest
0 голосов
/ 08 ноября 2018

Привет, у меня есть набор данных CSV, как

ukwn, 34,2018-10-01, "757271"

ukwn, 3,2018-10-01, "7342"

"привет", 23,2018-10-01, "3483887"

Я хочу вставить его в базу данных, поэтому я сделал код:

ЗАГРУЗИТЬ ДАННЫЙ ЛОКАЛЬНЫЙ INFILE 'data.csv' В СТОЛ. App_spend_metric ПОЛЯ, ПРЕКРАЩЕННЫЕ ',' ФАКУЛЬТАТИВНО ЗАКЛЮЧЕНО "" " ЛИНИИ, ПРЕКРАЩЕННЫЕ '\ n' IGNORE 1 ЛИНИИ (Col1, col2, col3, COL4)

Но мне не удается вставить col4 (4-ую строку), так как есть "," внутри "", как "7,345"

Я пытался тогда,

ЗАГРУЗИТЬ ДАННЫЙ ЛОКАЛЬНЫЙ INFILE 'data.csv' В СТОЛ. App_spend_metric ПОЛЯ, ПРЕКРАЩЕННЫЕ ',' ЛИНИИ, ПРЕКРАЩЕННЫЕ '\ n' IGNORE 1 ЛИНИИ (Col1, col2, col3, COL4)

Но на этот раз он вводит частичные данные в col4, как из "7,344", он вводит только "7

1 Ответ

0 голосов
/ 08 ноября 2018

Если col4 является числовым (например, INT), то проблема заключается в следующем:

  1. Разобрать строку, чтобы получить строку "7,344"
  2. Снимите ограждение ": 7,344
  3. Сохранить строку в столбце INT. Это требует преобразования этой строки в число.
  4. Преобразование останавливается на первом нечисловом символе, а именно на запятой.
  5. Результат: col4 установлен на 7, а ,344 брошен.

MySQL не может иметь дело с «разделителями тысяч» в числах. Но вы можете лишить их:

LOAD ...
    (col1, col2, col3, @num)
    SET col4 = REPLACE(@num, ',', '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...