MYSQL импортирует данные из .csv, используя LOAD DATA INFILE с возрастанием в определенном столбце - PullRequest
0 голосов
/ 23 октября 2019

Я загрузил данные из CSV-файла и вставляю их в базу данных с помощью метода LoadData.

У меня работает следующий запрос:

LOAD DATA LOCAL INFILE '"$FILE1"' 
INTO TABLE inventory FIELDS 
TERMINATED BY ','
ENCLOSED BY '\"' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES (@ignore ,StockType ,StockNo ,ServiceVIN ,YearMake ,CMake ,SModel ,BodyType ,Color ,Interiorcolor ,@ignore ,EngineSize ,@ignore ,Transmission ,Miles ,List ,@ignore ,@ignore ,Drive ,@ignore ,Details ,@ignore ,ModelType ,@ignore ,@ignore ,@ignore ,Trim) 
SET CreatedAt = NOW();"

Но мне нужно вставить данные в порядке возрастания в столбец списка. Возможно ли это?

Я пробовал orderby в этом запросе, но он не работает.

Рабочий запрос:

LOAD DATA LOCAL INFILE '"$FILE1"' 
INTO TABLE inventory FIELDS TERMINATED BY ',' 
ENCLOSED BY '\"' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES (@ignore ,StockType ,StockNo ,ServiceVIN ,YearMake ,CMake ,SModel ,BodyType ,Color ,Interiorcolor ,@ignore ,EngineSize ,@ignore ,Transmission ,Miles ,List ,@ignore ,@ignore ,Drive ,@ignore ,Details ,@ignore ,ModelType ,@ignore ,@ignore ,@ignore ,Trim) 
SET CreatedAt = NOW();"

1 Ответ

0 голосов
/ 23 октября 2019

Если объем данных не слишком велик, вы можете использовать результат оператора SELECT в качестве источника данных для оператора INSERT.

Шаг за шагом:

LOAD DATA LOCAL INFILE '"$FILE1"' 
INTO TABLE inventory FIELDS TERMINATED BY ',' 
ENCLOSED BY '\"' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES (@ignore ,StockType ,StockNo ,ServiceVIN ,YearMake ,CMake ,SModel ,BodyType ,Color ,Interiorcolor ,@ignore ,EngineSize ,@ignore ,Transmission ,Miles ,List ,@ignore ,@ignore ,Drive ,@ignore ,Details ,@ignore ,ModelType ,@ignore ,@ignore ,@ignore ,Trim) 
SET CreatedAt = NOW();"

INSERT INTO inventory(column_list)
SELECT 
   select_list 
FROM inventory_tmp
ORDER BY column1

Вы можете прочитать более подробную информацию здесь: http://www.mysqltutorial.org/mysql-insert-into-select/

Вариант 2: Вы также можете отсортировать текстовый файл перед импортом в базу данных. Следуйте этому руководству: https://stackoverflow.com/a/2100384/12263045

...