MySQL-多集加载数据填充
我有一个像这样的MySQL-多集加载数据填充,mysql,csv,load,Mysql,Csv,Load,我有一个像这样的表名: No | Name | Inserted_Date | Inserted_By ===================================== 然后我得到了这样的文件名.csv no,name 1,jhon 2,alex 3,steve 我想使用如下语法加载这些文件表\u name: LOAD DATA INFILE 'name.csv' INTO TABLE table1 FIELDS TERMINATED BY ',' LINES TERMINATED
表名:
No | Name | Inserted_Date | Inserted_By
=====================================
然后我得到了这样的文件名.csv
no,name
1,jhon
2,alex
3,steve
我想使用如下语法加载这些文件表\u name
:
LOAD DATA INFILE 'name.csv' INTO TABLE table1
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
???
No | Name | Inserted_Date | Inserted_By
=====================================
1 | jhon | sysdate() | me
2 | ales | sysdate() | me
3 | steve | sysdate() | me
问题是,我应该在上放什么?
这样我就可以像这样存储数据:
LOAD DATA INFILE 'name.csv' INTO TABLE table1
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
???
No | Name | Inserted_Date | Inserted_By
=====================================
1 | jhon | sysdate() | me
2 | ales | sysdate() | me
3 | steve | sysdate() | me
在mysql中使用load data命令无法做到这一点。数据必须在输入文件中
如果您使用的是Linux,那么使用sed或类似工具将额外的字段数据添加到输入文件中就足够容易了
另一种方法是上传文件,然后运行查询,用所需数据更新缺少的字段
您还可以在表上设置触发器,以便在插入时填充这些字段,前提是您希望使用mysql用户名值。我不知道表中是否已经存在列inserted\u date
和inserted\u by
。如果否,则可以在运行加载数据填充之前添加它们:
LOAD DATA INFILE 'name.csv' INTO TABLE table1
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(@no, @name)
set
no = @no,
name = @name,
inserted_date = now(),
inserted_by = 'me'
像这样的东西可以做到:
LOAD DATA INFILE 'name.csv' INTO TABLE table1
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
SET inserted_date=CURRENT_DATE(), inserted_by='me'
请看一下手册:
在数据库中一分钟内插入超过7000000条记录的批量(带计算的超高速查询)
RRP和RRP_nl和RRP_bl不在csv中,但我们在计算后插入该值。这与已发布到该问题的4年答案有什么不同?它不会增加任何价值。这是一个不同的答案。此选项使用的是加载数据
本地
填充
,而不仅仅是加载数据填充
。请添加有关您的答案以及如何解决问题的更多描述和/或信息,以便其他人可以轻松理解,而无需进行澄清