我需要在 oracle 資料庫中插入一個視頻,這是我想要做的,我想知道我創建了這個表是否正確:
CREATE TABLE video (vid_id number
,vid_name varchar2(100)
,video BLOB) ;
控制檔案是這樣的:
LOAD DATA
INFILE 'video.txt'
INTO TABLE tab1
FIELDS TERMINATED BY ','
(id ,
video_filename FILLER CHAR(100),
videoLOBFILE(video_filename) TERMINATED BY EOF)
video.txt檔案是這樣的
1,vid.mp4
我在一個用于存盤圖片的教程中遇到了這個,我不明白的是它如何知道視頻的路徑?
uj5u.com熱心網友回復:
我會使用 PL/SQL 來做到這一點,而不是 SQL*Loader。這是一個例子。
連接為SYS,創建目錄(指向包含檔案的檔案系統目錄的 Oracle 物件)并向將加載檔案的用戶授予權限:
SQL> connect sys as sysdba
Enter password:
Connected.
SQL> create directory ext_dir as 'c:\temp';
Directory created.
SQL> grant read, write on directory ext_dir to scott;
Grant succeeded.
SQL>
連接為scott; 創建目標表,加載檔案:
SQL> connect scott/tiger
Connected.
SQL> create table test (id number, movie blob);
Table created.
SQL> declare
2 l_dir varchar2(10) := 'EXT_DIR';
3 l_file varchar2(20) := 'movie.mp4';
4 l_bfile bfile;
5 l_blob blob;
6 begin
7 insert into test (id, movie)
8 values (1, empty_blob())
9 return movie into l_blob;
10
11 l_bfile := bfilename(l_dir, l_file);
12 dbms_lob.fileopen(l_bfile, dbms_lob.file_readonly);
13 dbms_lob.loadfromfile(l_blob, l_bfile, dbms_lob.getlength(l_bfile));
14 dbms_lob.fileclose(l_bfile);
15
16 end;
17 /
PL/SQL procedure successfully completed.
SQL> select dbms_lob.getlength(movie) from test;
DBMS_LOB.GETLENGTH(MOVIE)
-------------------------
1570024
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/376669.html
