我在这方面的斗智斗勇。我已经研究过这个死亡,似乎无法解决。我有以下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('Y-m-d')
";
我的CSV文件包含以下标题行:ID,用户名,用户电子邮件,类型。
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表包含以下字段:标记(自动增量),ID,名称,电子邮件,类型,哈希,Date_Update,Time_Update。
我似乎无法弄清楚如何在此命令中使用SET功能。我设置@ignore跳过标签(自动增量字段)。
我很茫然。任何帮助将不胜感激。
答案 0 :(得分:1)
这假设使用Tab '\t'
作为列分隔符。
按照您的意愿修改哈希值。我现在暂时将sha2()
作为占位符。
这需要一段时间来解决这个问题。我不得不进入编辑'你的问题假设有标签。最后,用户Here找到了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 |
+-----+-------+------------+-----------+---------+----------------------------------------------------+---------------------+