Невозможно загрузить CSV в MySQL: строка 1 не содержит данных для всех столбцов - PullRequest
1 голос
/ 12 апреля 2020

Я развернул контейнер с изображением mysql. Я пытаюсь загрузить CSV.

Это выглядит примерно так, но с большим количеством строк. Он расположен в /local/data/af_bases.csv внутри контейнера. Вы можете получить копию файла здесь .

Tinker AFB,Oklahoma,9y69rzbsh9mz,-1
Andrews AFB,Maryland,dqckf8m8ry2c,-1
Grissom AFB,Indiana,dp4xrf0ufvjd,-1

Я создаю базу данных geolocations. И тогда я хочу выполнить следующее:

USE geolocations;

CREATE TABLE bases( 
name varchar(255), 
state varchar(255), 
geohash varchar(255),
confirmed float,
timestamp timestamp not null default current_timestamp on update current_timestamp
);

LOAD DATA INFILE '/local/data/af_bases.csv' INTO TABLE bases 
FIELDS TERMINATED BY ',' ENCLOSED BY '' 
LINES TERMINATED BY '\n'; 

Однако я получаю следующее:

ERROR 1261 (01000): Row 1 doesn't contain data for all columns

Я попытался заключить данные в двойные кавычки и выполнил ENCLOSED BY '"', но это похоже, это не нравится в любом случае. Спасибо :)

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

В вашей таблице 5 столбцов, в CSV только 4 поля в каждой строке.

В CSV отсутствует столбец timestamp. Если вы хотите получить значение по умолчанию вместо того, чтобы брать его из CSV, вам нужно явно перечислить столбцы в операторе LOAD DATA. По умолчанию заполняются все столбцы таблицы.

LOAD DATA INFILE '/local/data/af_bases.csv' 
INTO TABLE bases (name, state, geohash, confirmed)
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'; 
0 голосов
/ 12 апреля 2020

Ошибка 1261 - это несоответствие столбцов и данных, т.е. только 4 строки и 5 столбцов.

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