【PostGreSQL】PostGreSQL到Oracle的数据迁移

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果是个PostGreSQL的数据,于是装数据库,但这个也不懂呀,而且本系统用的Oracle,于是得解决迁移转换的问题。

总结下来两个思路。

1、PostgresToOracle

多金的用第一种。

这个软件很好,但是不便宜,129美元,试用期30天,试用状态每次每表只能转1000条

2、SQL*LOADER

如果手头不宽裕可以用这种通用方法

我用的Aqua Data Studio 19

1、查询到数据

sql 复制代码
select * from public.xxx;

这里会有个问题,就是如果数据量太大,比如我这里28万条,会显示内存不足,需要改下软件的默认内存大小

大约这个安装路径下这个文件

D:\Program Files\Aqua Data Studio 19.0 - 64bit\datastudio.ini

修改下vmarg.2大一些,我这里直接调整为4096,

powershell 复制代码
vmarg.1=-Dsun.swing.enableImprovedDragGesture
vmarg.2=-Xmx4096M
vmarg.3=-XX:MetaspaceSize=512m
vmarg.4=-Djsse.enableCBCProtection=false

2、将查询结果保存到本地

用datastudio的保存结果保存到本地


3、建表

根据postgresql的表结构进行创建oracle表,这里建议所有数字number类型和时间类型统一改成varchar,nvarchar也让我改成了varchar

4、sqlloder导入

sqlloadr配置文件

文件名 xxx.txt,要导入的文件名 D:\xxx.csv

powershell 复制代码
--编写 insert.ctl 文件
load data
characterset ZHS16GBK -- 表的储存格式
INFILE 'D:\xxx.csv' -- 数据文本路径
Append into table xxx -- 表名
fields terminated by "," -- 以,分割字段
(
	id,xzq,bldid
)

执行命令进行导入

sql 复制代码
sqlldr username/password@127.0.0.1:1521/orcl control=xxx.txt

注意:路径和文件名尽量不要用中文

characterset ZHS16GBK

这行用于避免中文乱码

这个sql查看数据库编码格式,保持一致

sql 复制代码
select * from v$nls_parameters where PARAMETER like '%NLS_CHARACTERSET%'

5、导入后数据验证处理

中间可能会出现报错,会在当前目录下产生log日志,可以查看报错信息,我这遇到的主要是number类型存了非number数据,让我都给改成varchar就没问题了,后续可以在oracle里进行格式转换。

总之思路就是把复杂问题转换为自己能解决的问题,postgresql我搞不了,oracle那不是手拿把掐。

相关推荐
IvorySQL2 小时前
PostgreSQL 日报|恢复期 COPY TO 未日志表修复(10 月 21 日)
数据库·postgresql·区块链
贝猫说python3 小时前
大模型比赛2.3智能体开发(工具调用智能问答助手)
数据库·oracle
许彰午4 小时前
28-ORA-01110数据文件读取错误
数据库·oracle
凯凯姜4 小时前
MySQL 联合索引设计与索引失效
数据库·mysql
猫咪很可爱5 小时前
Oracle TEMP 表空间不足(ORA-01652)问题分析与优化实践
数据库·oracle
九零HTTP6 小时前
10月21号-CSDN配菜-IP池的5个坑
服务器·数据库·tcp/ip
Data-Miner7 小时前
需要做财务数据分析,有什么好用的工具?从准备到出报告的实操指南
大数据·数据库·数据分析
袋鼠云数栈7 小时前
让 SQL 解析不再重复造轮子:SqlParserX 正式开源
数据库·人工智能·sql·开源·数据治理
这个DBA有点耶8 小时前
期货 CTP 系统 Oracle RAC 迁移国产库实战:读写分离架构设计与性能对标
数据库·架构·dba
数据库安全8 小时前
AI数据访问安全 |如何控制AI访问权限,防止越权
数据库·安全