Загружать данные Локальный файл с хешем и датой с помощью набора

Я нахожусь на этом. Я исследовал это до смерти и не могу решить. У меня есть следующий оператор PHP:

$sqlstatement="LOAD DATA LOCAL INFILE '$temp' INTO TABLE contacts FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r' IGNORE 1 LINES (@ignore, @ID, @Name, @Email, @Type, @Hash, @Time) SET Date_Update=date('Ym-d') "; 

Мой CSV-файл содержит следующую строку заголовка: идентификатор, имя пользователя, адрес электронной почты пользователя, тип.

 ID User Name User Email Type 12345 Jackson, F fj@me.com Level 1 67890 Stewart, J js@me.com Level 1 43210 Fuller, T tf@me.com Level 2 62295 Lewis, M ml@me.com Level 2 

Файл CSV также имеет дополнительные поля, которые мне не нужно импортировать. Я надеялся, что я могу выбрать, какие поля импортировать. Не уверен в технике.

Таблица MYSQL имеет следующие поля: Tag (автоинкремент), ID, имя, адрес электронной почты, тип, хэш, Date_Update, Time_Update.

Я не могу понять, как использовать функцию SET в этой команде. Я установил @ignore, чтобы пропустить тег (поле автоинкремента).

  • Как получить поле CSV «Имя пользователя» в поле «Имя» MYSQL?
  • Как создать сегодняшнюю дату для поля MYQL «Date_Update»? Я попробовал SET Date_Update = date ('Ym-d'), но он отображается пустым.
  • Как создать хэш из поля «ID» CSV? Я попробовал Hash = Hash ('sha384', $ pre. @ ID. $ Suf)

Я в недоумении. Любая помощь будет оценена по достоинству.

Solutions Collecting From Web of "Загружать данные Локальный файл с хешем и датой с помощью набора"

Это берет на предположение Tab '\t' как разделитель столбцов.

Измените свой хэш как хотите. Я просто поместил sha2() в качестве заполнитель для сейчас.

Это заняло некоторое время, чтобы понять это. Я должен был войти в «Редактировать» вашего вопроса, чтобы предположить, что есть вкладки. И, наконец, нашел peer Answer by Здесь пользователь peixe .

Вы никогда не поставляли схему, поэтому я полетел с этим. Добавьте свой график времени, если хотите. Но я свернул дату и время в один столбец, now() в datetime .

Схема:

 drop table if exists pumpkin001; create table pumpkin001 ( Tag int auto_increment primary key, ID varchar(10) not null, Name varchar(100) not null, Email varchar(100) not null, Type varchar(100) not null, Hash varchar(1000) not null, Date_Update datetime not null ); 

Загрузка (Windows):

 LOAD DATA LOCAL INFILE 'c:\\nate\\file007.txt' into table pumpkin001 COLUMNS TERMINATED BY '\t' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (@ID, @Name, @Email, @Type) SET ID=@ID, Name=@Name, Email=@Email, Type=@Type, Hash=sha2(@ID,384), Date_Update=now(); 

Загрузить (Linux):

 LOAD DATA LOCAL INFILE 'file007.txt' into table pumpkin001 COLUMNS TERMINATED BY '\t' LINES TERMINATED BY '\n' IGNORE 1 LINES (@ID, @Name, @Email, @Type) SET ID=@ID, Name=@Name, Email=@Email, Type=@Type, Hash=sha2(@ID,384), Date_Update=now(); 

Результаты:

 select Tag,ID,Name,Email,Type,left(Hash,50) as L50_Hash,Date_Update from pumpkin001; +-----+-------+------------+-----------+---------+----------------------------------------------------+---------------------+ | Tag | ID | Name | Email | Type | L50_Hash | Date_Update | +-----+-------+------------+-----------+---------+----------------------------------------------------+---------------------+ | 1 | 12345 | Jackson, F | fj@me.com | Level 1 | 0fa76955abfa9dafd83facca8343a92aa09497f98101086611 | 2016-07-14 18:21:40 | | 2 | 67890 | Stewart, J | js@me.com | Level 1 | 6988c291a83b05760b93263fc78e8feeca8ca4641b007c6978 | 2016-07-14 18:21:40 | | 3 | 43210 | Fuller, T | tf@me.com | Level 2 | 6d07aa9758595e1dfe5dca93acc46dea01fef0856fe7dadf04 | 2016-07-14 18:21:40 | | 4 | 62295 | Lewis, M | ml@me.com | Level 2 | f3d4154869ef03ff09ea778b5066bd909c3ce5baf894e0593b | 2016-07-14 18:21:40 | +-----+-------+------------+-----------+---------+----------------------------------------------------+---------------------+