Я импортирую файл csv, используя LOAD DATAINFILE
Столбцы csv – это NAME, TYPE, STATUS
моя структура таблицы
Имя: varchar ТИП: Varchar Статус: значение Tiny int по умолчанию 1
Я использую эту stmt:
LOAD DATA INFILE '/var/www/names.csv' INTO TABLE users FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES
Когда я использую вышеуказанный оператор, он должен вставить значение статуса как 1 для каждой строки, но он не вставляет то же самое. Пожалуйста, порекомендуйте.
При загрузке файла MySQL ожидает, что он имеет такое же количество столбцов, что и таблица назначения, если вы не указали иначе, даже если отсутствующий столбец имеет значение по умолчанию. Поэтому поставьте список столбцов в оператор LOAD
и буква 1 для значения STATUS
:
LOAD DATA INFILE '/var/www/names.csv' INTO TABLE users FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (`name`, `type`, 1)
Вы также можете сделать это с помощью предложения SET
:
LOAD DATA INFILE '/var/www/names.csv' INTO TABLE users FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (`name`, `type`) SET `status` = 1
После выполнения запроса проверьте все предупреждения, используя
show warnings
Значение по умолчанию – 0 для числовых типов данных и «для строк».
Таким образом, вы должны установить значение по умолчанию 1 при создании таблицы
create table tableName ( name nvarchar(100) not null, type nvarchar(100) not null, status smallint default 1 );