У меня такая таблица:Пропустив первый столбец с INFILE LOAD DATA
mysql> show create table final\G;
*************************** 1. row ***************************
Table: final
Create Table: CREATE TABLE `final` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`cdatetime` varchar(255) NOT NULL,
`address` varchar(255) NOT NULL,
`district` varchar(255) NOT NULL,
`beat` varchar(255) NOT NULL,
`grid` varchar(255) NOT NULL,
`crimedescr` varchar(255) NOT NULL,
`ucr_ncic_code` varchar(255) NOT NULL,
`latitude` varchar(255) NOT NULL,
`longitude` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
И у меня есть CSV-файл, который выглядит следующим образом:
cdatetime,address,district,beat,grid,crimedescr,ucr_ncic_code,latitude,longitude
1/1/06 0:00,3108 OCCIDENTAL DR,3,3C ,1115,10851(A)VC TAKE VEH W/O OWNER,2404,38.55042047,-121.3914158
1/1/06 0:00,2082 EXPEDITION WAY,5,5A ,1512,459 PC BURGLARY RESIDENCE,2204,38.47350069,-121.4901858
1/1/06 0:00,4 PALEN CT,2,2A ,212,10851(A)VC TAKE VEH W/O OWNER,2404,38.65784584,-121.4621009
1/1/06 0:00,22 BECKFORD CT,6,6C ,1443,476 PC PASS FICTICIOUS CHECK,2501,38.50677377,-121.4269508
То, что я хочу сделать, это нагрузка, CSV файл в таблицу final. Проблема в том, что у csv-файла нет столбца ID, поэтому я думаю, что можно каким-то образом сказать mysql пропустить идентификатор столбца и загрузить данные в остальные столбцы, но ID должен использоваться. В идеале это выглядело бы так:
«1/1/06 0: 00,3108 OCCIDENTAL DR, 3,3C, 1115,10851 (A) VC TAKE VEH W/O OWNER, 2404,38.55042047, -121.3914158 «загружается в столбцы, а mysql автоматически добавляет 1 к идентификатору столбца, затем« 1/1/06 0: 00,2082. ПУТЬ ЭКСПЕДИЦИИ, 5,5A, 1512,459 PC BURGLARY RESIDENCE, 2204,38.47350069, -121.4901858 »загружается и MySQL добавить 2 в ID столбца и т.д. и т.д ..
Недавно пользователь «Тень» сказал мне, что я должен указать, какой столбец я хочу, чтобы загрузить, так что я сделал что-то вроде этого:
load data infile '/SacramentocrimeJanuary2006.csv' INTO TABLE final (cdatetime, address, district, beat, grid, crimedescr, ucr_ncic_code, latitude, longitude);
Mysql возвращает:
Согласно mysql load data infile ручной разделитель полей не является «,», поэтому я попытался изменить его, добавив FIELDS TERMINATED BY ',' в конце моего оператора, но этот запрос прерывает. Какой здесь правильный синтаксис?
Благодаря
ОТВЕТ
mysql> CREATE TABLE `final` (
-> `id` int(4) NOT NULL AUTO_INCREMENT,
-> `cdatetime` longtext NULL,
-> `address` longtext NULL,
-> `district` longtext NULL,
-> `beat` longtext NULL,
-> `grid` longtext NULL,
-> `crimedescr` longtext NULL,
-> `ucr_ncic_code` longtext NULL,
-> `latitude` longtext NULL,
-> `longitude` longtext NULL,
-> PRIMARY KEY (`id`)
->) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.17 sec)
mysql> LOAD DATA infile '/SacramentocrimeJanuary2006.csv' INTO TABLE final FIELDS TERMINATED BY ',' lines terminated by '\r' IGNORE 1 ROWS (cdatetime, address, district, beat, grid, crimedescr, ucr_ncic_code, latitude, longitude);
Query OK, 7584 rows affected (0.08 sec)
Records: 7584 Deleted: 0 Skipped: 0 Warnings: 0
MySQL> LOAD DATA INFILE '' /SacramentocrimeJanuary2006.csv -> в таблице конечных полей TERMINATED BY '', окруженный '' Игнорирует 1 ROWS -> (cdatetime , адрес, район, бит, сетка, crimedescr, ucr_ncic_code, широта, долгота); Query OK, 0 строк (0.00 sec) ** Записи: 0 Удалено: 0 Пропущено: 0 Предупреждения: 0 ** – jonasv