2012-11-29 11 views
0

如何圖像加載到Oracle數據庫表如何圖像加載到Oracle數據庫表

假設我有一個像圖像的列表

CREATE TABLE image (img_id number 
        ,img_name varchar2(100) 
        ,img BLOB) ; 

任何一個可以幫助我

+1

在哪裏圖像?文件系統/數據庫/ Java對象 –

+0

RobertMerkwürdigeliebe圖像文件系統 – Viru

回答

2

如果文件位於數據庫服務器上,請參閱羅伯特的方法。

如果文件位於CLIENT文件系統上,請使用SQLLDR。例如:

SQL> CREATE TABLE tab1 (
    2 id number primary key, 
    3 image  BLOB 
    4 ); 

Table created. 

SQL> host sqlldr user/[email protected] control=load_image.ctl 

SQL*Loader: Release 11.2.0.2.0 - Production on Thu Nov 29 10:41:08 2012 

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 

Commit point reached - logical record count 1 

SQL> select * from tab1; 

     ID 
---------- 
IMAGE 
-------------------------------------------------------------------------------- 
     1 
FFD8FFE000104A46494600010101004800480000FFE111C44578696600004D4D002A00000008000B 
010F00020000000100000000011000020000000100000000011200030000000100010000011A0005 


SQL> select length(image) from tab1; 

LENGTH(IMAGE) 
------------- 
     263508 

SQL> 

其中控制文件是這樣的:

LOAD DATA 
INFILE 'images.txt' 
INTO TABLE tab1 
FIELDS TERMINATED BY ',' 
(id , 
image_filename FILLER CHAR(100), 
image    LOBFILE(image_filename) TERMINATED BY EOF) 

和樣品images.txt文件:

1,foo.jpg 
+0

感謝DazzaL爲您的輸入,它工作正常:) – Viru

3
CREATE OR REPLACE DIRECTORY test_dir AS 'C:\'; 

DECLARE 
    l_bfile BFILE; 
    l_blob BLOB; 
BEGIN 
    INSERT INTO tab1 (col1, col2) 
    VALUES (empty_blob(), 'test1') 
    RETURN col1 INTO l_blob; 

    l_bfile := BFILENAME('test_dir', 'Test.txt'); 
    DBMS_LOB.fileopen(l_bfile, Dbms_Lob.File_Readonly); 
    DBMS_LOB.loadfromfile(l_blob, l_bfile, DBMS_LOB.getlength(l_bfile)); 
    DBMS_LOB.fileclose(l_bfile); 

    COMMIT; 
END; 
+0

我冒昧地插入更新語句 –

+0

@RobertMerkwürdigeliebe更新是多餘的。使用mr dump技術的寫入模式返回lob指針。 – DazzaL

+0

好酷。我會檢查出來,不是我不相信你; ;-) –

相關問題