Я нахожусь на этом. Я исследовал это до смерти и не могу решить. У меня есть следующий оператор 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, чтобы пропустить тег (поле автоинкремента).
Я в недоумении. Любая помощь будет оценена по достоинству.
Это берет на предположение 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 | +-----+-------+------------+-----------+---------+----------------------------------------------------+---------------------+