nodejs 进行对oracle 数据库导出的数据脚本加工

125 阅读1分钟

2万行的数据库 sql 文件 一次导入 oracle plsql 客户端时候会卡顿

可以进行分批导入

而且 原sql 对表字段都有 "" 这里进行一次 去除引号
且 对表进行了统计 发现是144 张表
oracle 数据库为空时 没有表 执行 drop table 行会错误
所以对原sql 进行一次删除这个行 写入新sql 文件

// http://localhost:8080/aotai_p2p/index.html
const fs = require('fs');

const inputFile = 'sql.sql'; // 原来的数据库建表语句
const outputFile = 'sql-now.sql'; // 格式化后的建表语句

// 读取文件的每一行并过滤出不包含 "drop table" 的行
fs.readFile(inputFile, 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  } 

  const lines = data.split('\n');
  const filteredLines = lines.filter(line => !line.includes('DROP TABLE'));
  const tables =  lines.filter(line => line.includes('CREATE TABLE')).map(e=>  e.match( /CREATE TABLE AOTAI\.([A-Z_0123456789]+)/)[1] );

  console.log(tables.length);
  
  // 将过滤后的内容写入新文件
  const outputData = filteredLines.join('\n');
  fs.writeFile(outputFile, outputData, 'utf8', (err) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log('Filtered lines have been written to ' + outputFile);
  });

  fs.writeFile('./tablles.md', tables.join("\n"), 'utf8', (err) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log('Filtered lines have been written to ' + outputFile);
  });
});