问题描述
你好,汤姆,
我们从informix迁移到oracle,我们有这个问题:
我们必须卸载有几百万条记录的表,每条记录都有blob,
在一些大小接近2 GB的blob文件中卸载了blob。
170,000 blob都在一个blob文件中。
我们发现只有一种将内容加载到oracle数据库的方法,
每个表记录都有一个blob的文件路径。
这意味着文件系统中数百万个文件。
有没有其他方法可以从卸载文件加载记录,但是blob合并到
blob文件很少?
谢谢你的回答。
你写:
With regards to: "有没有其他方法可以从卸载文件加载记录,但是blob合并到 blob文件很少?" "170,000 blob都在一个blob文件中。" I dont know what you mean by - lots of blobs merged into 1 file?
我知道解释它类似于informix。
我们有informix的大表,300 mil. records,每条记录都有blob。
我使卸载,卸载文件具有字段 “ADR,LENGTH,file”,其中ADR是从blob文件开始的字节数,长度是whitch blob具有的字节数,并且
文件是blob文件名。
Blob文件名由不超过2GB字节的blob文件组成。
当blob文件显示2GB时,informix会创建新的blob文件,依此类推。
我的问题是,如何将此卸载加载到oracle数据库。
我们发现只有在oracle中,卸载文件有字段 “blob文件名” 的记录,但这意味着avery blob在单独的文件中。
请给mi一些有关从informix到oracle迁移工具的知识的链接,whitch专注于使用blob迁移大表。
非常感谢。
我们从informix迁移到oracle,我们有这个问题:
我们必须卸载有几百万条记录的表,每条记录都有blob,
在一些大小接近2 GB的blob文件中卸载了blob。
170,000 blob都在一个blob文件中。
我们发现只有一种将内容加载到oracle数据库的方法,
每个表记录都有一个blob的文件路径。
这意味着文件系统中数百万个文件。
有没有其他方法可以从卸载文件加载记录,但是blob合并到
blob文件很少?
谢谢你的回答。
你写:
With regards to: "有没有其他方法可以从卸载文件加载记录,但是blob合并到 blob文件很少?" "170,000 blob都在一个blob文件中。" I dont know what you mean by - lots of blobs merged into 1 file?
我知道解释它类似于informix。
我们有informix的大表,300 mil. records,每条记录都有blob。
我使卸载,卸载文件具有字段 “ADR,LENGTH,file”,其中ADR是从blob文件开始的字节数,长度是whitch blob具有的字节数,并且
文件是blob文件名。
Blob文件名由不超过2GB字节的blob文件组成。
当blob文件显示2GB时,informix会创建新的blob文件,依此类推。
我的问题是,如何将此卸载加载到oracle数据库。
我们发现只有在oracle中,卸载文件有字段 “blob文件名” 的记录,但这意味着avery blob在单独的文件中。
请给mi一些有关从informix到oracle迁移工具的知识的链接,whitch专注于使用blob迁移大表。
非常感谢。
专家解答
好的,如果您有以下信息:
ADR、长度、文件
然后,您应该能够循环通过并将blob加载到数据库中,而不必太大惊小怪,例如:
这是我的示例合并的blob文件,以及加载它的加载器。我正在对文件名和长度进行硬编码,但这可以在表格或任何方便的源中
ADR、长度、文件
然后,您应该能够循环通过并将blob加载到数据库中,而不必太大惊小怪,例如:
这是我的示例合并的blob文件,以及加载它的加载器。我正在对文件名和长度进行硬编码,但这可以在表格或任何方便的源中
C:\temp>dir sang*
Volume in drive C is OS
Volume Serial Number is 9CB0-0212
Directory of C:\temp
27/11/2016 06:18 PM 214,715 sangam1.jpg
27/11/2016 06:18 PM 133,674 sangam2.jpg
27/11/2016 06:19 PM 257,522 sangam3.jpg
15/01/2017 10:24 AM 475,650 sangam4.jpg
4 File(s) 1,081,561 bytes
0 Dir(s) 205,366,693,888 bytes free
C:\temp>cat sangam* > blob.file
C:\temp>dir blob.file
Volume in drive C is OS
Volume Serial Number is 9CB0-0212
Directory of C:\temp
18/04/2017 11:02 AM 1,081,561 blob.file
1 File(s) 1,081,561 bytes
0 Dir(s) 205,356,343,296 bytes free
SQL> create table blobfiles ( name varchar2(20), b blob );
Table created.
SQL>
SQL> set serverout on
SQL> declare
2 type file_details is record
3 ( len number,
4 name varchar2(30)
5 );
6 type file_list is table of file_details index by pls_integer;
7
8 f file_list;
9
10 source_blob bfile := bfilename('TEMP','blob.file');
11 each_blob blob;
12
13 l_offset_Dest int;
14 l_offset_src int := 1;
15 begin
16 f(1).len := 214715;
17 f(1).name := 'sangam1.jpg';
18
19 f(2).len := 133674;
20 f(2).name := 'sangam1.jpg';
21
22 f(3).len := 257522;
23 f(3).name := 'sangam1.jpg';
24
25 f(4).len := 475650;
26 f(4).name := 'sangam1.jpg';
27
28 -- fake entry for starting point
29 f(0).len := 0;
30
31 dbms_lob.fileopen(source_blob);
32
33 for i in 1 .. 4 loop
34 insert into blobfiles
35 values ( f(i).name, empty_blob())
36 returning b into each_blob;
37
38
39 l_offset_Dest := 1;
40
41 dbms_output.put_line(i);
42 dbms_output.put_line(l_offset_src);
43 dbms_output.put_line(f(i).len);
44
45 dbms_lob.loadblobfromfile
46 (each_blob,
47 source_blob,
48 f(i).len,
49 l_offset_Dest,
50 l_offset_src);
51
52 end loop;
53 end;
54 /
1
1
214715
2
214716
133674
3
348390
257522
4
605912
475650
PL/SQL procedure successfully completed.
SQL>
SQL> select * from blobfiles;
NAME
--------------------
B
-------------------------------------------------------------------------------------------
sangam1.jpg
FFD8FFE000104A46494600010101004800480000FFDB00430001010101010101010101010101010101010101010
0102020101020101010202020202020202020102
sangam1.jpg
FFD8FFE000104A46494600010101004800480000FFDB00430001010101010101010101010101010101010101010
0102020101020101010202020202020202020102
sangam1.jpg
FFD8FFE000104A46494600010101004800480000FFDB00430001010101010101010101010101010101010101010
0102020101020101010202020202020202020102
sangam1.jpg
FFD8FFE000104A46494600010101004800480000FFDB00430001010101010101010101010101010101010101010
0102020101020101010202020202020202020102
4 rows selected.
SQL> select name, dbms_lob.getlength(b) from blobfiles;
NAME DBMS_LOB.GETLENGTH(B)
-------------------- ---------------------
sangam1.jpg 214715
sangam1.jpg 133674
sangam1.jpg 257522
sangam1.jpg 475650
4 rows selected.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




