node.js之定时任务+文件读取+INSERTALL
来源:互联网 发布:vb里头mid函数查找 编辑:程序博客网 时间:2024/06/06 03:40
有个需求
每天更新一下oracle数据库中的某张表
数据来自与csv文件 四个字段,用逗号分割
大约千万条,测试数据有298W条
引入定时任务模块
var schedule = require('node-schedule');
var start=require("~~~~")
定义规则
var rule = new schedule.RecurrenceRule();
rule.dayOfWeek = [0, new schedule.Range(1, 6)];
rule.hour = 15;
rule.minute = 48;
var j = schedule.scheduleJob(rule, function(){
BlmLog.info("[schedule] [start]:Success !!");
start.start();
});
如:每周15:48执行任务,即 引入的start的start方法
start方法:
引入:
var fs = require("fs");
var readline = require('readline')
读取csv文件中的每一行 拼接成sql放入数组
会在dao、中遍历数组
与INSERT ALL组成最终的sql语句
6000条一插
设置成500条的时候 对oracle请求过于频繁会报错
6000条又有点慢
this.start=async() =>{ const re = await dao.clearTable(); var i=0; console.log("start read!"); var rl = readline.createInterface({ input: fs.createReadStream('vlcc_ship_track.csv') }); rl.on('line', async(line)=>{ var results=line.split(","); if(results.length==4){ var sql = "INTO 表名 VALUES ('"+results[0]+"','"+results[1]+"','"+results[2]+"','"+results[3]+"')"; data.push(sql);} i++; if(i==6000){ i=0; rl.pause();//暂停一哈,传入data dao.insert(data); data.length=0; await rl.resume(); } });
rl.on('close', async(line) =>{ await dao.insert(data);//不够6000条,剩下的也插入 console.log("read end!"); }); }清空表用truncate table 表名
INSERT ALL写法:
var sql_data="";
for (var i=0;i<data.length;++i){
sql_data=sql_data+data[i]+" ";
}
var sql = "INSERT ALL "+sql_data+" select 1 from dual";
- node.js之定时任务+文件读取+INSERTALL
- Node.js之定时任务 node作业--node-schedule
- node.js学习之读取文件初步
- Node.js读取文件
- Node.js 读取文件
- 用node.js做定时任务
- node.js定时任务:node-schedule的使用
- node.js定时任务:node-schedule的使用
- node.js定时任务:node-schedule的使用
- node.js定时任务:node-schedule的使用【转】
- node.js定时任务:node-schedule的使用
- node.js 读取ini文件
- Node.js读取文件内容
- node.js 读取文件内容
- node.js 读取动态文件
- node js 读取文件内容
- node.js 读取文件内容
- Node.js文件的读取
- Redux 状态管理2
- “雪人计划”在全球架设IPv6根服务器 中国部署4台
- 一次 Spark SQL 性能提升10倍的经历
- jQuery添加options点击事件并传值实例代码
- android获取设备中所有应用的包名
- node.js之定时任务+文件读取+INSERTALL
- 【C++】C++常见面试题汇总_持续更新中...
- ArrayList源码分析
- 基于OpenSSL颁发数字证书的一个完整实例
- rosen老师 的gitconfig配置
- python3爬虫伪装代理IP
- 老僧长谈设计模式-7-代理模式2
- 游戏中的小地图
- spring boot实战(第三篇)事件监听源码分析