视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
javamysql批量导入数据自动更新日期_MySQL
2020-11-09 18:51:09 责编:小采
文档


bitsCN.com

这段时间,一直在利用hadoop和pig对一些数据进行操作,每周的新产生的数据量都是百万级以上,对于大批量的数据(千万级以上)插入和更新操作,如果利用insert的操作起来速度比较慢,我测试了一下如果利用insert 来实现插入三千万条的记录需要二十个小时以上(没有使用集群)。

为了提高插入和更新数据的速度,mysql提供了load指令,可以大大的提高插入的速度,在我的机器上,load操作的速度是insert的10倍左右。

官方的load 指令格式如下:

 LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name [CHARACTER SET charset_name] [{FIELDS | COLUMNS} [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] [IGNORE number LINES] [(col_name_or_user_var,...)] [SET col_name = expr,...]
1. 如果你要插入的数据在本地,可以使用如下指令:

Load data local infile '要插入的数据源名称' into table 要插入的的表名

2. 如果对已经存在的记录进行更新操作,可以使用如下指令:

Load data local infile '要插入的数据源名称' replace into table 要插入的的表名

对于有些场景,当每条数据进行更新时需要把相关的时间进行更新,如果没有进行更新则保存原来的时间。对于这种情况有两种方法可以进行解决:

方法1. 这种方法比较常规,就是在进行插入或者更新时,把当前的时间传入到数据库中,一起进行更新操作。

方法2. 可以在进行建表的时候,通过使用如下指令,假如你要创建的列名为time

`time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
bitsCN.com

下载本文
显示全文
专题