0、说明
利用mysql load和oracle 的sqlldr将sybase中导出的bcp文件分别进行导入。
bcp文件分隔符:!!@@!!
bcp文件结束符号:,
文件内容:
1!!@@!!1!!@@!!1!!@@!!,,,,,
2!!@@!!2!!@@!!2!!@@!!,,,,,
3!!@@!!3!!@@!!3!!@@!!,,,,,
1、导入mysql
利用mysqlload进行导入。
语法:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name,...)]
[CHARACTER SET charset_name]
[{
FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number {
LINES | ROWS}]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]
常用到的大致语句为:
load data infile 'file_name' into table table_name fields terminated by '分隔符'
例子:
mysql> load data local infile '/root/mysql.bcp' into table t3 fields terminated by '!!@@!!';
Query OK, 3 rows affected, 3 warnings (0.00 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 3
mysql> select * from t3;
+------+------+------+
| c1 | c2 | c3 |
+------+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
+------+------+------+
3 rows in set (0.00 sec)
注:
一般情况下为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。你可以通过执行show variables like '%secure%'来查看。
所以我们需要将secure_file_priv的值设为空,表示不对mysqld 的导入|导出做限制。
vi /etc.my.cnf
#添加以下内容
secure_file_priv=’’
2、导入oracle
使用sql loader将文本类型的文件导入oracle的表中。使用步骤如下:
创建控制文件:
vi input.ctl
load data
infile "/home/oracle/oracle.bcp"
append into table t3
fields terminated by "!!@@!!"
(c1,c2,c3)
导入:
[oracle@oracle ~]$ sqlldr userid=test/test@itsmpdb1 control=input.ctl
扫描二维码关注公众号,回复:
12653347 查看本文章

SQL*Loader: Release 12.2.0.1.0 - Production on Thu Jun 18 14:26:01 2020
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Path used: Conventional
Commit point reached - logical record count 3
Table T3:
3 Rows successfully loaded.
Check the log file:
input.log
for more information about the load.
查看:
SQL> select * from t3;
C1 C2 C3
---------- ---------- ----------
1 1 1
2 2 2
3 3 3
常见问题:
其中遇到比较常见的问题就是sybase中datetime类型数据导入oracle该如何处理?
在oracle中我们可以使用date类型去兼容sybase的datetime类型。
–例1:
bcp文件中数据格式如下:
Dec 11 2020 12:00AM
那么我们控制文件可以写成这样:
load data
infile "/home/oracle/oracle.bcp"
append into table t2
(c1 timestamp "MON DD YYYY HH:MIAM")
–例2:
bcp文件中数据格式为:
Dec 11 2012 5:56:00:000AM
那么我们控制文件可以写成:
load data
infile "/home/oracle/oracle.bcp"
append into table t2
(c1 timestamp "MON DD YYYY HH:MI:SS:FF3AM")
参考链接:
https://xz.aliyun.com/t/3973
http://f.dataguru.cn/thread-133061-1-1.html