Oracle資料遷移至MySQL
MYSQL DB: 5.5.14
因專案需求,需要將ORACLE生產中資料遷移至MYSQL資料庫中作為初始資料,方法有如下幾種:
1、ORACLE OGG
2、透過手動編寫select “insert into”指令碼
3、工具,本次我就是使用了工具(sqluldr2),工具下載地址可以到去下載
使用方法:
將sqluldr2.bin工具上傳到oracle的bin目錄下,
[root@db01 bin]# chown oracle.oinstall sqluldr2.bin
[root@db01 bin]# chmod 775 sqluldr2.bin
[root@db01 bin]# su - oracle
[oracle@db01 ~]$ sqluldr2 help=yes
Valid Keywords:
user =
sql = SQL file name
query = select statement
field = separator string between fields
record = separator string between records
rows = print progress for every given rows (default, 1000000)
file = output file name(default: uldrdata.txt)
log = log file name, prefix with + to append mode
fast = auto tuning the session level parameters(YES)
text = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH).
charset = character set name of the target database.
ncharset= national character set name of the target database.
parfile = read command option from parameter file
read = set DB_FILE_MULTIBLOCK_READ_COUNT at session level
sort = set SORT_AREA_SIZE at session level (UNIT:MB)
hash = set HASH_AREA_SIZE at session level (UNIT:MB)
array = array fetch size
head = print row header(Yes|No)
batch = save to new file for every rows batch (Yes/No)
size = maximum output file piece size (UNIB:MB)
serial = set _serial_direct_read to TRUE at session level
trace = set event 10046 to given level at session level
table = table name in the sqlldr control file
control = sqlldr control file and path.
mode = sqlldr option, INSERT or APPEND or REPLACE or TRUNCATE
buffer = sqlldr READSIZE and BINDSIZE, default 16 (MB)
long = maximum long field size
width = customized max column width (w1:w2:...)
quote = optional quote string
data = disable real data unload (NO, OFF)
alter = alter session SQLs to be execute before unload
safe = use large buffer to avoid ORA-24345 error (Yes|No)
crypt = encrypted user information only (Yes|No)
sedf/t = enable character translation function
null = replace null with given value
escape = escape character for special characters
escf/t = escape from/to characters list
format = MYSQL: MySQL Insert SQLs, SQL: Insert SQLs.
exec = the command to execute the SQLs.
prehead = column name prefix for head line.
rowpre = row prefix string for each line.
rowsuf = row sufix string for each line.
colsep = separator string between column name and value.
presql = SQL or scripts to be executed before data unload.
postsql = SQL or scripts to be executed after data unload.
lob = extract lob values to single file (FILE).
lobdir = subdirectory count to store lob files .
split = table name for automatically parallelization.
degree = parallelize data copy degree (2-128).
hint = MySQL SQL hint for the Insert, for example IGNORE.
unique = Unique Column List for the MySQL target table.
update = Enable MySQL ON DUPLICATE SQL statement(YES/NO).
crack = The crack key for the content protection.
uncrack = The uncrack key for the content protection.
for field and record, you can use '0x' to specify hex character code,
\r=0x0d \n=0x0a |=0x7c ,=0x2c, \t=0x09, :=0x3a, #=0x23, "=0x22 '=0x27
每次引數所代表的具體含義和意義不描述,自己看
注意以下3點:
1、將ORACLE資料庫中資料遷移到MYSQL,不要透過分隔符的方法,測試過分隔符,在匯入到MYSQL過程中會有警告,一些資料被截斷,避免大家走彎路
2、切記ORACLE生產環境的字符集是GBK,而MYSQL生產環境的字符集是UTF-8
3、將ORACLE資料全部匯出成insert into 語句,這樣在插入的過程避免出錯,可以透過MYSQL還原命令直接還原,如出錯程式會終止,source插入資料,中間出現警告,無法去驗證
在測試ORACLE匯出成insert into文字後,在還原到MYSQL過程中,測試N多次後,最終匯出命令如下:
sqluldr2.bin query="select * from YOON.CESHI" charset=UTF8 text=MYSQLINS format=SQL file=/u01/backup/oracle_mysql/CESHI_%b.txt size=30000MB table=CESHI safe=YES
user : 使用者名稱/密碼@服務名
query:查詢語句
charset:字符集UTF-8 , 將oracle中gbk字符集資料匯出為文字格式後的字符集為UTF-8
text :匯出檔案型別,必須為MYSQLINS, 成為的檔案資料中自動生成插入mysql語句的``符號,例如:`張三`
format:格式為MYSQL
file:匯出資料檔案儲存路徑
%b:字母b必須為小寫,可生成多個資料文字檔案 ,例如:CESHI_1,CESHI_2 ......; 避免直接生成一個超級大的資料檔案
size:必須以MB為單位,匯出的每個檔案的大小,30000MB,匯出的每個資料檔案30G
table:生成的資料檔案中直接包含表名,否則會成生成insert into " ",沒有表名
safe:YES 這個一定要加,在測試大量的表中,發現有的oracle表匯出過程中會報ORA-24345錯誤,說是工具的BUG,加引數safe=YES即可
總結:
經過大量的測試後最終總結上面的匯出命令語句,目前測試的表資料沒有問題,至少對於我而言是這樣.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-1344973/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫遷移至PolarDb(阿里雲資料庫)Oracle資料庫阿里
- MySQL資料庫使用pg_chameleon遷移至openGaussMySql資料庫Chameleon
- 【RMAN】Oracle使用rman將11.2.0.4資料庫遷移至Oracle12c命令參考Oracle資料庫
- MSSQL Server 遷移至 ORACLE解決方案SQLServerOracle
- 資料檔案遷移至其他磁碟組
- 異構資料庫資料遷移 oracle to mysql之oracle sqlloader和mysql load data資料庫OracleMySql
- ETL資料整合丨PostgreSQL資料遷移至Hive資料庫SQLHive資料庫
- 【XTTS】使用XTTS傳輸表空間將Oracle11.2.0.4資料遷移至Oracle19CTTSOracle
- 記一次簡單的Oracle離線資料遷移至TiDB過程OracleTiDB
- Oracle資料庫遷移 - 異構傳輸表空間TTS HP-UX遷移至Redhat Linux 7.7Oracle資料庫TTSRedhatLinux
- sqlserver使用者資料庫遷移至其他盤SQLServer資料庫
- 舊NAS資料遷移至新NAS怎麼做
- 1.0 ORACLE到MYSQL資料遷移方式選型OracleMySql
- 如何從自建MySQL遷移至阿里雲RDS for MySQL的教程MySql阿里
- Hadoop Hive遷移至MaxComputeHadoopHive
- AWS RDS Oracle資料遷移Oracle
- Mysql資料遷移方法MySql
- Oracle RAC遷移至南大通用GBase 8c 解決方案Oracle
- SQL Server 遷移至MySQL 關鍵步驟的梳理總結ServerMySql
- 輕鬆上雲系列之二:其他雲資料遷移至阿里雲阿里
- Oracle資料庫(資料泵)遷移方案(上)Oracle資料庫
- Oracle資料庫(資料泵)遷移方案(下)Oracle資料庫
- ESXI 遷移至KVM (V2V遷移)
- MySQL資料庫遷移到PostgresMySql資料庫
- 遷移MySQL 5.7資料庫MySql資料庫
- linux mysql資料庫遷移LinuxMySql資料庫
- 本部落格已遷移至Wordpress~
- MySQL資料庫遷移與MySQL資料庫批量恢復MySql資料庫
- Oracle資料庫(DataGuard)遷移方案(下)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(上)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(中)Oracle資料庫
- 無外網Oracle資料庫遷移Oracle資料庫
- MySQL資料遷移那些事兒MySql
- 應用遷移至 Android P 操作指南Android
- oracle RAC 更換儲存遷移資料Oracle
- Oracle12c遷移-某風險報告類系統升級暨遷移至12c-2Oracle
- Oracle12c遷移-某風險報告類系統升級暨遷移至12c-3Oracle
- Oracle12c遷移-某風險報告類系統升級暨遷移至12c-1Oracle
- Oracle資料庫中資料行遷移與行連結Oracle資料庫