mysql和pg等数据库之间的数据迁移实战分享
mysql和pg等数据库之间的数据迁移是常见的问题:比如一开始使用Oracle,后来想使用mysql,而且需要把Oracle数据库的数据迁移到mysql里面;后期有想使用pg数据库,同时需要把Mysql数据库的数据迁移到pgl里面,等等诸如此类数据迁移,都是一个重要问题。基于此,我们今天分享mysql数据迁移到pg数据库的案例。方案如下:
一、客户端迁移
如果数据量比较小,并且win电脑端可以连上数据库,此种情况下可以使用客户端迁移数据,比如使用Navicat 15及以上版本。现在开始演示:
1、工具栏中选择数据传输
2、选择数据源和目标
点击下一步进入
3、选择表结构
自定义选择或者选择全部数据,再点击下一步,就可以开始传输数据了,如果有错误,有日志实时打印。
4、创建自增序列
msql数据库迁移到pg之后,字段类型都改成相应的字段了,比如:
常见数据类型的映射:
TINYINT
->SMALLINT
INT
->INTEGER
BIGINT
->BIGINT
VARCHAR
->VARCHAR
TEXT
->TEXT
DATETIME
->TIMESTAMP
DECIMAL
->NUMERIC
只有主键自增这一块,需要单独处理一下:即每张表的主键添加自增序列
参考文章
二、pgLoader 工具迁移
pgloader 使用文档
1、安装 pgLoader
首先,确保你的系统上安装了 pgLoader
。你可以使用包管理器安装,也可以从源代码编译安装。
Ubuntu/Debian 环境
sudo apt-get install pgloader或者 CentOS/RHEL 环境sudo yum install pgloader
2、从源代码编译安装
如果你的发行版没有直接提供 pgLoader
包,你可以从源代码安装:
git clone https://github.com/dimitri/pgloader.git
cd pgloader
make build
sudo make install
下载地址
3、Docker 镜像安装
docker pull dimitri/pgloader
运行
docker run --rm dimitri/pgloader:latest pgloader --version
3、命令查看 pgLoader
是否安装成功:
pgloader --version
4、准备 MySQL 和 PostgreSQL 数据库
确保你的 MySQL 数据库和 PostgreSQL 数据库已经准备好,并且你有相应的访问权限。
- MySQL: 确保你知道 MySQL 数据库的连接信息(用户名、密码、数据库名、主机名、端口)。
- PostgreSQL: 确保目标 PostgreSQL 数据库已经创建好,并且你有相应的访问权限。
5、使用 pgLoader 迁移数据
pgloader mysql://mysql_user:mysql_password@mysql_host/mysql_dbname postgresql://pg_user:pg_password@pg_host/pg_dbname
参数注释:
mysql_user
: MySQL 用户名mysql_password
: MySQL 密码mysql_host
: MySQL 服务器地址(例如localhost
或 IP 地址)mysql_dbname
: 要迁移的 MySQL 数据库名pg_user
: PostgreSQL 用户名pg_password
: PostgreSQL 密码pg_host
: PostgreSQL 服务器地址(例如localhost
或 IP 地址)pg_dbname
: 目标 PostgreSQL 数据库名
三、手动导入
1、使用 mysqldump
导出 SQL 脚本
mysqldump -u [username] -p[password] --compatible=postgresql --no-create-info [database_name] > mysql_data.sql
此命令将生成一个 mysql_data.sql
文件,其中包含 MySQL 表的数据,且格式与 PostgreSQL 兼容。
2、创建 PostgreSQL 表
根据 MySQL 表的结构,在 PostgreSQL 中创建相应的表。需要注意的是,MySQL 和 PostgreSQL 在数据类型方面有一些差异。以下是一些常见数据类型的映射:
TINYINT
->SMALLINT
INT
->INTEGER
BIGINT
->BIGINT
VARCHAR
->VARCHAR
TEXT
->TEXT
DATETIME
->TIMESTAMP
DECIMAL
->NUMERIC
例如,假设 MySQL 中有以下表:
CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(255),salary DECIMAL(10, 2),hired_date DATETIME
);
则在 PostgreSQL 中创建相应的表:
CREATE TABLE employees (id SERIAL PRIMARY KEY,name VARCHAR(255),salary NUMERIC(10, 2),hired_date TIMESTAMP
);
3、导入数据到 PostgreSQL
psql -U [username] -d [database_name] -f mysql_data.sql
最后,检查数据是否正确迁移到 PostgreSQL,确保表结构、数据类型和数据内容都无误。
到此,不同数据库之间的数据迁移暂时分享完成,后面我们会持续更新更新的迁移方案,敬请期待!
相关文章:

mysql和pg等数据库之间的数据迁移实战分享
mysql和pg等数据库之间的数据迁移是常见的问题:比如一开始使用Oracle,后来想使用mysql,而且需要把Oracle数据库的数据迁移到mysql里面;后期有想使用pg数据库,同时需要把Mysql数据库的数据迁移到pgl里面,等等…...

消息中间件都有哪些
RabbitMQ:这可是一个开源的消息代理软件,也叫消息中间件。它支持多种消息传递协议,可以轻松地在分布式系统中进行可靠的消息传递。 Kafka:Apache Kafka是一个分布式流处理平台,它主要用于处理实时数据流。Kafka的设计初…...
数据结构(3)内核链表
一、内核链表 内核链表是一种在操作系统内核中使用的数据结构,主要用于管理和组织内核对象。它是有头双向链表的一种实现。 内核链表的特点 双向链表: 内核链表的每个节点都包含指向前一个节点和后一个节点的指针,这使得在链表中进行插入和删除操作时更…...

Linux 硬件学习 s3c2440 arm920t蜂鸣器
1.查找手册时钟图,输入12m想要通过pll得到400m的信号 2.对比pll值,找到最近的为405,得到pll中mdiv为127,pdiv为2,sdiv为1 3.想要得到fclk400,hclk100,pclk50,对比分频比例࿰…...
提交保存,要做重复请求拦截,避免出现重复保存的问题
**问题:**前端ajax提交数据的时候,当频繁点击的时候,或者两个账号以相同数据创建的时候,会出现问题。 **处理办法:**前端拦截,防止重复提交数据,在上一次请求返回结果之后才允许提交第二次&…...
华为 HCIP-Datacom H12-821 题库 (3)
有需要题库的可以看主页置顶 1.运行 OSPF 协议的路由器在交互 DD 报文时,会使用以下哪一个参数选举主从关系? A、接口的 IP 地址 B、接口的 DR 优先级 C、Area ID D、Router ID 答案:D 解析: Router-ID 大的为主&a…...
spring-boot 事件
事件触发时机常用监听器描述ApplicationStartingEvent应用启动时LoggingApplicationListener:决定加载哪个日志系统ApplicationEnvironmentPreparedEvent创建Environment之后BootstrapApplicationListener:加载spring-cloud bootstrap配置文件࿱…...

合碳智能 × Milvus:探索化学合成新境界——逆合成路线设计
合碳智能(C12.ai)成立于2022年,致力于运用AI和具身智能技术,为药物研发实验室提供新一代智能化解决方案,推动实验室从自动化迈向智能化,突破传统实验模式与人员的依赖,解决效率和成本的瓶颈&…...

二分查找 | 二分模板 | 二分题目解析
1.二分查找 二分查找的一个前提就是要保证数组是有序的(不准确)!利用二段性! 1.朴素二分模板 朴素二分法的查找中间的值和目标值比较 while(left < right) // 注意是要: < {int mid left (right -left) / 2;…...

uni-app应用更新(Android端)
关于app更新,uni-app官方推荐的是 uni-upgrade-center,看了下比较繁琐,因此这里自己实现检查更新并下载安装的逻辑。 1.界面效果 界面中的弹框和 进度条采用了uView 提供的组件 2.检查更新并下载安装 一、版本信息配置在服务端,…...

JavaEE(2):前后端项目之间的交互
现在,在网页中通过超链接,表单就可以向后端发送请求,后端也可以正常响应内容。 以前通过表单访问后端的请求方式称为同步请求 同步请求 当网页与后端交互时,前端不能再进行其他操作 服务器端响应回来的内容,会把整个浏…...

(已开源-CVPR 2024)YOLO-World: Real-Time Open-Vocabulary Object Detection
169期《YOLO-World Real-Time Open-Vocabulary Object Detection》 You Only Look Once (YOLO) 系列检测模型是目前最常用的检测模型之一。然而,它们通常是在预先定义好的目标类别上进行训练,很大程度上限制了它们在开放场景中的可用性。为了解决这一限制…...

Spring6梳理4——SpringIoC容器
以上笔记来源: 尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)https://www.bilibili.com/video/BV1kR4y1b7Qc 目录 4.1 前言 4.2 IoC容器 4.2.1 控制反转(IoC) 4.2.2 依赖注入 4.2.3 IoC容器在Spri…...

SpringBoot2:请求处理原理分析-FORM表单请求接口
一、RESTFUL简介 Rest风格支持(使用HTTP请求方式,动词来表示对资源的操作) 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改…...
Monkey日志ANR、CRASH、空指针异常及其他异常数据分析
引言 在Android开发过程中,monkey测试是一种常用的随机测试手段,用于模拟用户的各种操作来发现应用中的稳定性问题。通过monkey测试生成的日志文件包含了丰富的信息,包括应用程序崩溃(Crash)、无响应(ANR&…...
Vue 3结合Element Plus中,实现一个级联选择器(Cascader)来展示省市区
在Vue 3结合Element Plus中,实现一个级联选择器(Cascader)来展示省市区(甚至到更细分的级别,如街道、小区等)的联动选择是一个常见的需求。Element Plus的Cascader组件非常适合这样的场景,因为它…...

使用卫星仿真软件STK的一些应用和思考(星地链路、星间链路)
目录 任务描述利用STK建模星地协同系统3个GEO高轨卫星240/20/1 Walker-Star Constellation 低轨卫星星座地面站或者地面设备 链路建模与数据提取处理星地链路星间链路数据读取的几种方法最麻烦的方法使用Matlab与STK互联接口使用大规模使用Chain 总结 任务描述 在一个星地协同…...
pytorch对不同的可调参数,分配不同的学习率
在 PyTorch 中,你可以通过为优化器传递不同的学习率来针对不同的可调参数分配不同的学习率。这通常通过向优化器传递一个字典列表来实现,其中每个字典指定特定参数组的学习率。下面是一个示例代码,展示了如何实现这一点: import …...

零基础学习Python(八)—— time模块、request模块、数据分析和自动化办公相关模块、jieba模块、文件操作和os相关模块的简单介绍
1. time模块 time():获取当前时间戳,是一个数字 localtime():返回一个time.struct_time对象,里面有年月日时分秒,还有星期几(0表示星期一)和今年的第几天 import timeprint(time.time()) pri…...
快速回顾-HTML5
HTML5-常用的标签:https://blog.csdn.net/TKOP_/article/details/111395865 <!-- HTML5:声明文档类型的标签 --> <!DOCTYPE html><!-- 用于声明网页的主要语言为简体中文 --> <!-- 帮助搜索引擎、浏览器等理解网页的语言内容,以便…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...

stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...