postgresql|数据库迁移|ora2pg工具的web界面介绍

2023-10-24 07:12

本文主要是介绍postgresql|数据库迁移|ora2pg工具的web界面介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

ora2pg是一个比较强大的数据库迁移工具,那根据名字来说,也可以看出来,这个工具主要是用来配置去O化,将在运行的oracle数据库迁移到postgresql数据库内的

当然了,我们使用此工具主要还是用命令行,但在某些情况下,可能还是需要可视化,毕竟该工具的使用需要配置一个配置文件,而配置文件内的选项参数是非常多的哦,而有了web界面,精确的,完整的迁移对于非DBA来说也会是一个轻松+愉快啦。

OK,下面开始介绍ora2pg的web界面

一,

说明:目前来说,ora2pg的外部界面应该是使用docker直接跑镜像最为简单,因为,web界面是node项目封装,如果二进制安装,可能会比较麻烦

docker安装ora2pg

安装非常简单,一个命令就搞定,前提是docker环境,多说一句,ora2pg安装在哪都可以,因此,docker环境也没有太多要求

mkdir -p /data/ora2pg-projects
docker run -d -p 3000:3000 -v /data/ora2pg-projects:/project visulate/visulate-ora2pg:latest

###注:该镜像比较大,因此最好配置好国内加速,大概是1个G大小

二,

ora2pg的web界面的解析说明

docker代理了该web服务,上面的持久化目录/data/ora2pg-projects 里面都有些什么呢?

[root@node1 ~]# netstat -antup |grep 3000
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      56466/docker-proxy  
tcp6       0      0 :::3000                 :::*                    LISTEN      56474/docker-proxy  

可以看到其实该目录下没有什么东西:

[root@node1 ~]# ls -al /data/ora2pg-projects/
total 0
drwxr-xr-x 4 root root 33 Oct 19 22:35 .
drwxr-xr-x 3 root root 29 Oct 19 22:33 ..
drwxr-xr-x 3 root root 20 Oct 19 22:35 default
drwxr-xr-x 3 root root 20 Oct 19 22:35 test

进入容器后,可以看到很多隐藏的细节了:

[root@node1 ~]# docker ps 
CONTAINER ID   IMAGE                             COMMAND                  CREATED      STATUS      PORTS                                       NAMES
f1b5e7b89aad   visulate/visulate-ora2pg:latest   "entrypoint.sh /bin/…"   4 days ago   Up 4 days   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   thirsty_herscheldocker exec -it f1b5e /bin/bash
root@f1b5e7b89aad:/express# ls -alh
total 144K
drwxr-xr-x  1 root root   51 Jun  7 18:53 .
drwxr-xr-x  1 root root   18 Oct 19 14:33 ..
-rw-r--r--  1 root root  676 Jun 13  2022 Dockerfile
drwxr-xr-x  2 root root   84 Jun  7 18:51 api
-rw-r--r--  1 root root 1.9K Aug  1  2022 app.js
drwxr-xr-x  2 root root   17 Jun  7 18:51 bin
-rw-r--r--  1 root root  209 Aug  1  2022 db_connection_check.pl
drwxr-xr-x 64 root root 4.0K Jun  7 18:53 node_modules
-rw-r--r--  1 root root 124K Jun  7 18:53 package-lock.json
-rw-r--r--  1 root root  425 Aug  1  2022 package.json
drwxr-xr-x  2 root root   82 Jun  7 18:51 resources
drwxr-xr-x  2 root root   54 Jun  7 18:51 test
drwxr-xr-x  1 root root   18 Jun  7 18:53 ui

查看node的版本:

root@f1b5e7b89aad:/express# node -v
v18.16.0

查看项目的js文件:

OK,可以看到该项目分离出来时比较困难的

root@f1b5e7b89aad:/express# cat app.js 
const express = require('express');
const path = require('path');
const ora2pgRouter = require('./api/ora2pg');
const cors = require('cors');
const httpServerConfig = require('./resources/http-config');const app = express();// Add support for cross origin requests
// if CORS_ORIGIN_WHITELIST environment variable is set
let corsOptions;
const whitelist = httpServerConfig.corsOriginWhitelist.replace(/\s/g, '').split(",");if (whitelist.length === 1 && whitelist[0] === '*') {console.log(`Setting Access-Control-Allow-Origin to *`);corsOptions = { origin: '*' };
} else if  (whitelist.length > 0 && whitelist[0] !== '') {console.log(`Setting Access-Control-Allow-Origin to ${whitelist}`);corsOptions = {origin: function (origin, callback) {// allow whitelisted cross origin requests + REST tools and server to serverif (whitelist.indexOf(origin) !== -1 || !origin) {callback(null, true)} else {callback(new Error(`CORS error: origin server is not in ${whitelist}`))}}};
} else {console.log(`Setting Access-Control-Allow-Origin to FALSE`);corsOptions = { origin: false };
}
app.use(cors(corsOptions));// Setup routes
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'ui')));app.use('/ora2pg', ora2pgRouter);
app.use('/vue', express.static(path.join(__dirname, 'node_modules/vue/dist')));
app.use('/', express.static(path.join(__dirname, 'ui/dist')));
app.use('/projects/*', express.static(path.join(__dirname, 'ui/dist')));// error handler
app.use(function(err, req, res, next) {// set locals, only providing error in developmentres.locals.message = err.message;res.locals.error = req.app.get('env') === 'development' ? err : {};// render the error pageres.status(err.status || 500);res.render('error');
});module.exports = app;

三,

web界面的介绍

输入服务器IP地址+3000

ora2pg是项目隔离,这里我们看default项目就可以了:

 如果不使用高级选项的话,那么配置会比较简单,粗糙,这些英文就不解释了,如果配置完成后,点击save 后,点击run即可开始迁移工作,迁移出来的文件在此界面就可以点击下载了

高级选项的界面:

ora2pg的所有功能都会在此页面列出来,按需选择功能并填入参数值, 每个小问号都有参数解释,如果按需填写完毕后,可以点击export导出配置好的配置文件

未完待续!!!!

这篇关于postgresql|数据库迁移|ora2pg工具的web界面介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/273559

相关文章

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语