項(xiàng)目需要,有個數(shù)據(jù)需要導(dǎo)入,拿到手一開始以為是mysql,結(jié)果是個PostGreSQL的數(shù)據(jù),于是裝數(shù)據(jù)庫,但這個也不懂呀,而且本系統(tǒng)用的Oracle,于是得解決遷移轉(zhuǎn)換的問題。
總結(jié)下來兩個思路。
1、PostgresToOracle
多金的用第一種。
這個軟件很好,但是不便宜,129美元,試用期30天,試用狀態(tài)每次每表只能轉(zhuǎn)1000條
2、SQL*LOADER
如果手頭不寬??梢杂眠@種通用方法
我用的Aqua Data Studio 19
1、查詢到數(shù)據(jù)
select * from public.xxx;
這里會有個問題,就是如果數(shù)據(jù)量太大,比如我這里28萬條,會顯示內(nèi)存不足,需要改下軟件的默認(rèn)內(nèi)存大小
大約這個安裝路徑下這個文件
D:\Program Files\Aqua Data Studio 19.0 - 64bit\datastudio.ini
修改下vmarg.2大一些,我這里直接調(diào)整為4096,
vmarg.1=-Dsun.swing.enableImprovedDragGesture
vmarg.2=-Xmx4096M
vmarg.3=-XX:MetaspaceSize=512m
vmarg.4=-Djsse.enableCBCProtection=false
2、將查詢結(jié)果保存到本地
用datastudio的保存結(jié)果保存到本地
3、建表
根據(jù)postgresql的表結(jié)構(gòu)進(jìn)行創(chuàng)建oracle表,這里建議所有數(shù)字number類型和時間類型統(tǒng)一改成varchar,nvarchar也讓我改成了varchar
4、sqlloder導(dǎo)入
sqlloadr配置文件
文件名 xxx.txt,要導(dǎo)入的文件名 D:\xxx.csv
--編寫 insert.ctl 文件
load data
characterset ZHS16GBK -- 表的儲存格式
INFILE 'D:\xxx.csv' -- 數(shù)據(jù)文本路徑
Append into table xxx -- 表名
fields terminated by "," -- 以,分割字段
(
id,xzq,bldid
)
執(zhí)行命令進(jìn)行導(dǎo)入
sqlldr username/password@127.0.0.1:1521/orcl control=xxx.txt
注意:路徑和文件名盡量不要用中文
characterset ZHS16GBK
這行用于避免中文亂碼
這個sql查看數(shù)據(jù)庫編碼格式,保持一致文章來源:http://www.zghlxwxcb.cn/news/detail-670429.html
select * from v$nls_parameters where PARAMETER like '%NLS_CHARACTERSET%'
5、導(dǎo)入后數(shù)據(jù)驗(yàn)證處理
中間可能會出現(xiàn)報錯,會在當(dāng)前目錄下產(chǎn)生log日志,可以查看報錯信息,我這遇到的主要是number類型存了非number數(shù)據(jù),讓我都給改成varchar就沒問題了,后續(xù)可以在oracle里進(jìn)行格式轉(zhuǎn)換。
總之思路就是把復(fù)雜問題轉(zhuǎn)換為自己能解決的問題,postgresql我搞不了,oracle那不是手拿把掐。文章來源地址http://www.zghlxwxcb.cn/news/detail-670429.html
到了這里,關(guān)于【PostGreSQL】PostGreSQL到Oracle的數(shù)據(jù)遷移的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!