表数据批量快速导入方案

表数据批量快速导入方案

1. 客户端导入

  • 连接池

客户端一般使用jdbc、odbc等驱动连接数据库,采用数据库连接池;

  • 批量导入

为了快速导入数据,我们采用批量导入, 每批次导入1000条数据

  • 多线程

同时开启多线程任务,可以采用线程池,根据数据库的承受能力,确定最大线程数
注意数据库连接处的大小要大于等于多线程任务线程池的大小,而且建议每个线程内部通过连接池获取连接资源
多线程操作注意操作的实体数量,尽量不要产生更多的实体,防止占用过多资源(例如字符串拼接会导致数据量倍增),导致oom

  • 索引和解释计划更新

如果导入数据的表是新建表,建议先导入数据,再设置主键或索引
某些数据库在大量数据导入后,索引更新可能有滞后,可以手动重建索引

  • 测试样例

下面给出一组测试的样例,提供参考,该配置写入速度约为: 1000000条/分钟

项目选项说明
数据库mysql
连接池druid
连接池大小10
线程池最大线程数10
单次批量写入数据量1000
表字段数量20
是否有索引
- 步骤

    step 1: 创建表
    step 2: 开启多线程任务批量写入数据
    step 3: 写入完成,建立索引

2 服务端导入

2.1 mysql

  • load
    msyql服务端可以使用load命令导入,先把文件上传到mysql服务器,再执行load命令
LOAD DATA INFILE '路径/上传文件' INTO TABLE 表名

FIELDS TERMINATED BY ','

ENCLOSED BY '"'

LINES TERMINATED BY '\n';
  • mysql
    mysqlimport命令导入,先把文件上传到mysql服务器,再执行mysqlimport命令
mysqlimport -uroot -p 123456 --fields-terminated-by="," --columns=id,name /home/table_abc.txt 

2.2 oracle

  • impdb
    使用impdb导入,先把文件上传到oracle服务器,执行如下示例命令
impdp test/123456@192.168.0.123:1521/ORCLDB DIRECTORY=DATA_PUMP_DIR DUMPFILE=.DMP SCHEMAS=admin logfile=test.log
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值