javamysql批量导入数据自动更新日期

页面导航:首页 > 数据库 > Mysql > javamysql批量导入数据自动更新日期

javamysql批量导入数据自动更新日期

来源: 作者: 时间:2016-02-03 08:56 【

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

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<