mysql中的longblob類型如何轉換成blob或者clob,然后抽取到oracle中?
blob存儲的是二進制,而clob存儲的是字符類型,除非你blob字段里存儲的數據可以轉換為字符類型,否則是沒法轉換的,肯定會報錯!
blob存儲的是二進制,而clob存儲的是字符類型,除非你blob字段里存儲的數據可以轉換為字符類型,否則是沒法轉換的,肯定會報錯!
MYSQL 轉 ORACLE CLOB類型
現在有一個MySQL的表,其中一個字段類型是longtext。rn在Oracle 中有一個相同的表,對應這個字段的類型是CLOB。rn兩種數據庫之之間建立了一個dblink,oracle可以通過dblink訪問mysql對應表的數據。rn現在要在存儲過程使用dblink把數據導入到Oracle中,求大神幫忙。rnrn下面是基本的存儲過程,請幫忙改造下面的存儲過程。可以導CLOB的(mysql中,CODE字段是longtext類型)rnrn--t_businessarea_enterpriserndeclarern type ty_data is table of t_businessarea_enterprise%rowtype; rn ty_1 ty_data; rnbeginrn execute immediate x27select * from "t_businessarea_enterprise"@gjswebln x27 bulk collect into ty_1;rn -- 整體執行rn forall i in 1.. ty_1.count rn insert into t_businessarea_enterprise (enterprise_id,code)rn values (ty_1(i).enterprise_id,ty_1(i).code);rn commit;rnexception rn when others then rn dbms_output.put_line(sqlerrm); -- 打印錯誤rnend;rn/rnrn報錯信息:rnORA-22992: 無法使用從遠程表選擇的 LOB 定位符MYSQL中用LOGTEXT表示oracle中的CLOB類型。
Oracle
CLOB
Oracle 9i 及以前,最大4G字符數據 Oracle10g 最大4G*數據庫塊大小的字符數據
MySQL
LONGTEXT
最大長回度為4,294,967,295或4GB(232–1)字符的答TEXT列。LONGTEXT列的最大有效(允許的)長度取決于客戶端/服務器協議中配置最大包大小和可用的內存。
LONGBLOB
最大長度為4,294,967,295或4GB(232–1)字節的BLOB列。LONGBLOB列的最大有效(允許的)長度取決于客戶端/服務器協議中配置最大包大小和可用的內存。
在oracle端創建一個同樣schema的臨時表,使用dblink將數據插入臨時表(insert into xxx value select,然后再從臨時表查詢出來插入你的目標表
declare
type ty_data is table of t_businessarea_enterprise%rowtype;
ty_1 ty_data;
begin
execute immediate 'select * from "t_businessarea_enterprise"@復gjswebln ' bulk collect into ty_1;
-- 整體制執行
forall i in 1.. ty_1.count
insert into t_businessarea_enterprise (enterprise_id,code)
values (ty_1(i).enterprise_id,ty_1(i).code);
commit;
exception
when others then
dbms_output.put_line(sqlerrm); -- 打印錯誤
end;
/
請問問題解決了嗎?
如何將MySql數據導入至Oracle中
您好,很高興為您解答。
一、將表中數據導入文本文件保存
我是在WIN下的命令行模式做的
Mysql>select * from my_mysql_table into outfile 'c: /my_tmp.txt';
二、寫控制文件
用記事本開文檔寫完后改擴展名為.ctl,以下是具體內容
load data
infile 'c:/my_tmp.txt'
into table my_ora_table
replace
fields terminated by x'09'
(字段1,字段2,字段3,......字段N)
字段1~N是你要導入的MySql的表字段數據,不需要的字段可以不寫。
三、用Sqlldr導入文本
c:\>sqlldr ora_usr
回車后輸入控制文件的路徑,密碼,接下來加載控制文件自動導入。導入完成后,會生成個.log文件,可以查看你導入是否成功,不成功按提示的錯誤查找原因。
注意的是:導入文本前,應在ORACLE數據庫中事先建好要寫入數據的表,并且要和所要導入的數據字段一致,如果不知MySql的表結構,可以在Mysql>show create table my_mysql_table;查看建表的SQL,將其轉換成Oracle中可執行的SQL.
|用sqlldr從mysql導出一個表的數據到oracle中:
操作步驟:
1、進入mysql
mysql> select UUID, CYC_CODE, b03_05, b03_06, b03_07, b03_08, b03_09, b03_10, b03_11, b03_12, Cate_Item_Code, product_name, product_unit
from jb603_jb603_sub3 into outfile 'd:/tmp/603sub.txt';
Query OK, 79537 rows affected (0.48 sec)
mysql> show create table jb603_jb603_sub3;
| jb603_jb603_sub3 | CREATE TABLE `jb603_jb603_sub3` (
`UUID` varchar(32) NOT NULL default '',
`CYC_CODE` char(2) NOT NULL default '',
`b03_05` decimal(11,2) default '0.00',
`b03_06` decimal(11,2) default '0.00',
`b03_07` decimal(11,2) default '0.00',
`b03_08` decimal(11,2) default '0.00',
`b03_09` decimal(9,0) default '0',
`b03_10` decimal(11,2) default '0.00',
`b03_11` decimal(11,2) default '0.00',
`b03_12` decimal(11,2) default '0.00',
`Cate_Item_Code` varchar(7) NOT NULL default '',
`product_name` varchar(60) default '',
`product_unit` varchar(20) default '',
PRIMARY KEY (`UUID`,`CYC_CODE`,`Cate_Item_Code`)
) TYPE=InnoDB |
2、將語句整理成oracle支持的格式:
CREATE TABLE jb603_jb603_sub3 (
UUID varchar(32) NOT NULL ,
CYC_CODE char(2) NOT NULL ,
b03_05 number(11,2) ,
b03_06 number(11,2) ,
b03_07 number(11,2) ,
b03_08 number(11,2) ,
b03_09 number(9,0) ,
b03_10 number(11,2) ,
b03_11 number(11,2) ,
b03_12 number(11,2) ,
Cate_Item_Code varchar(7) NOT NULL ,
product_name varchar(60) ,
product_unit varchar(20) ,
PRIMARY KEY (UUID,CYC_CODE,Cate_Item_Code));
3、編寫sqlldr控制文件t.ctl
load data
infile 'd:/tmp/603sub.txt'
into table jb603_jb603_sub3
replace
fields terminated by x'09'
(UUID, CYC_CODE, b03_05, b03_06, b03_07, b03_08, b03_09, b03_10, b03_11, b03_12, Cate_Item_Code, product_name, product_unit)
3運行sqlplus /nolog
SQL> conn
[email protected]建立jb603_jb603_sub3表
SQL> CREATE TABLE jb603_jb603_sub3 (
2 UUID varchar(32) NOT NULL ,
3 CYC_CODE char(2) NOT NULL ,
4 b03_05 number(11,2) ,
5 b03_06 number(11,2) ,
6 b03_07 number(11,2) ,
7 b03_08 number(11,2) ,
8 b03_09 number(9,0) ,
9 b03_10 number(11,2) ,
10 b03_11 number(11,2) ,
11 b03_12 number(11,2) ,
12 Cate_Item_Code varchar(7) NOT NULL ,
13 product_name varchar(60) ,
14 product_unit varchar(20) ,
15 PRIMARY KEY (UUID,CYC_CODE,Cate_Item_Code));
表已創建。
5、ho進入操作系統命令行
在操作系統命令行運行sqlldr
[email protected] d:/tmp/t.ctl
提交導入腳本,邏輯記錄計數79537
6、exit回到sqlplus查詢導入結果
SQL> select count(*)from JB603_JB603_SUB3;
COUNT(*)
----------
79537
一、創建jack表,并導入一下數據
mysql> create table jack(id char(100),flwo char(100)) engine=myisam;
Query OK, 0 rows affected (0.08 sec)
mysql> load data infile '/u01/sqlload/taobao_9_11.txt' into table jack fields terminated by ',';
Query OK, 1469199 rows affected (20.09 sec)
Records: 1469199 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from jack limit 10;
+-------------+--------+
| id | flwo |
+-------------+--------+
| 13400017749 | 4594 |
| 13400087049 | 5044 |
| 13400826615 | 83029 |
| 13400977755 | 22505 |
| 13401509025 | 2671 |
| 13401584949 | 10435 |
| 13402065168 | 111061 |
| 13402077444 | 2525 |
| 13402133742 | 13204 |
| 13402156116 | 1935 |
+-------------+--------+
10 rows in set (0.01 sec)
二、將jack表的內容導入到txt文本中
mysql> select * from jack into outfile '/mysql/mysql5.5/load/data.txt' fields terminated by ',';
ERROR 1 (HY000): Can't create/write to file '/mysql/mysql5.5/load/data.txt' (Errcode: 13)
mysql> select * from jack into outfile '/mysql/mysql5.5/load/data.txt' fields terminated by ',';
Query OK, 1469199 rows affected (22.34 sec)
mysql> select count(*) from jack;
+----------+
| count(*) |
+----------+
| 1469199 |
+----------+
row in set (0.09 sec)
三、修改data.txt的屬主
[
[email protected] load]# chown oracle:oinstall data.txt
[
[email protected] load]# more data.txt
13400017749,4594
13400087049,5044
13400826615,83029
13400977755,22505
13401509025,2671
四、將data.txt導入到oracle表mysql中
[
[email protected] ~]$ cd /u01/sqlload/
[
[email protected] sqlload]$ cat mysql.ctl
load data
infile '/mysql/mysql5.5/load/data.txt'
append into table mysql
trailing nullcols
( id char terminated by ',',
flow char terminated by whitespace)
[
[email protected] sqlload]$ sqlldr jack/jack control='mysql.ctl' log=input.log direct=true
SQL*Loader: Release 11.2.0.1.0 - Production on 星期一 9月 23 15:15:57 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
加載完成 - 邏輯記錄計數 1469199。
五、驗證
SQL> select count(*) from mysql;
COUNT(*)
----------
SQL> select * from mysql where rownum < 10;
ID FLOW
---------- ----------
1.3400E+10 4594
1.3400E+10 5044
1.3401E+10 83029
1.3401E+10 22505
1.3402E+10 2671
1.3402E+10 10435
1.3402E+10 111061
1.3402E+10 2525
1.3402E+10 13204
已選擇9行。
寫個小程序好了。
oracle clob類型相當于mysql中的什么類型
Oracle
CLOB
Oracle 9i 及以前,最大4G字符數據 Oracle10g 最大4G*數據庫塊大小的字符數據
MySQL
LONGTEXT
最大長度為4,294,967,295或4GB(232–版1)字符的TEXT列。LONGTEXT列的最大有效權(允許的)長度取決
于客戶端/服務器協議中配置最大包大小和可用的內存。
LONGBLOB
最大長度為4,294,967,295或4GB(232–1)字節的BLOB列。LONGBLOB列的最大有效(允許的)長度取
決于客戶端/服務器協議中配置最大包大小和可用的內存。
Oracle
CLOB
Oracle 9i 及以前,最大4G字符數內據 Oracle10g 最大4G*數據庫塊大小的字符數據
MySQL
LONGTEXT
最大長容度為4,294,967,295或4GB(232–1)字符的TEXT列。LONGTEXT列的最大有效(允許的)長度取決于客戶端/服務器協議中配置最大包大小和可用的內存。
LONGBLOB
最大長度為4,294,967,295或4GB(232–1)字節的BLOB列。LONGBLOB列的最大有效(允許的)長度取決于客戶端/服務器協議中配置最大包大小和可用的內存。
相當于mysql中的blob類型,一樓說的long text是存字符的
blob類型
BLOB類型
如何將varchar超過4000個字符 插入到oracle clob類型中
LOB ("TXT") STORE AS (... ENABLE STORAGE IN ROW ...
這控制了 LOB 數據是否總與表分開存儲(存儲在 lobsegment 中),或是有時可以回與表一同存儲,答
而不用單獨放在 lobsegment 中。如果設置了 ENABLE STORAGE IN ROW,而不是 DISABLE STORAGE
IN ROW,小LOB(最多 4,000 字節)就會像 VARCHAR2 一樣存儲在表本身中。只有當 LOB 超過了 4,000
字節時,才會“移出”到 lobsegment 中。
相關推薦:
電子合同糾紛解決(簽電子合同糾紛怎么解決)
現戶籍所在地怎么填寫(戶籍所在地怎么填寫)
超生新生兒如何上戶(超生如何給孩子上戶口)
行政處罰會留案底嗎(行政處罰決定書會留案底嗎)
公民如何保護生命健康權(法律如何保護我們的健康)