网站地图    收藏   

主页 > 后端 > mysql数据库 >

javamysql批量导入数据自动更新日期 - mysql数据库栏

来源:自学PHP网    时间:2015-04-16 10:51 作者: 阅读:

[导读] 这段时间,一直在利用hadoop和pig对一些数据进行操作,每周的新产生的数据量都是百万级以上,对于大批量的数据(千万级以上)插入和更新操作,如果利用insert的操作起来速度比较慢...

这段时间,一直在利用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,

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论