Я использую MySQL LOAD DATA INFILE для перемещения данных файла CSV в таблицу базы данных. Я ищу способ ссылки на исходный номер строки строки (строки) в импортированной записи.
Чтобы таблица выглядела так:
CREATE TABLE tableName ( uniqueId INT UNSIGNED NOT NULL PRIMARY_KEY, import_file VARCHAR(100), import_line INT, import_date = DATETIME, fieldA VARCHAR(100), fieldB VARCHAR(100), fieldC VARCHAR(100) );
Где import_file, import_line и данные импорта – это метаданные, относящиеся к конкретному импорту файла. fieldA, fieldB и fieldC представляют фактические данные в файле.
Был бы обновлен следующим запросом:
LOAD DATA INFILE '$file' REPLACE INTO TABLE '$tableName' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATES BY '\n' IGNORE 1 LINES # first row is column headers (fieldA,fieldB,fieldC) SET import_date = now(), import_file = '" . addslashes($file) . "', import_line = '???';
АLOAD DATA INFILE '$file' REPLACE INTO TABLE '$tableName' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATES BY '\n' IGNORE 1 LINES # first row is column headers (fieldA,fieldB,fieldC) SET import_date = now(), import_file = '" . addslashes($file) . "', import_line = '???';
Есть ли переменная, с которой я могу установить 'import_line'?
Благодаря,
-М
Это можно сделать, предварительно установив пользовательскую переменную и увеличив эту переменную в предложении SET, т. Е.
SET @a:=0; -- initialize the line count LOAD DATA INFILE 'c:/tools/import.csv' -- my test import REPLACE INTO TABLE tableName FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES # first row is column headers (fieldA,fieldB,fieldC) SET import_date = now(), import_file = 'import.csv', import_line = @a:=@a+1; -- save the incremented line count
АSET @a:=0; -- initialize the line count LOAD DATA INFILE 'c:/tools/import.csv' -- my test import REPLACE INTO TABLE tableName FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES # first row is column headers (fieldA,fieldB,fieldC) SET import_date = now(), import_file = 'import.csv', import_line = @a:=@a+1; -- save the incremented line count