如何将视频插入 Oracle 数据库
how to insert a video into Oracle db
我需要将视频插入 oracle 数据库,这就是我正在尝试做的,我想知道它是否正确
我创建了这个 table :
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
我在一个用于存储图片的教程中遇到过这个,我不明白它是如何知道视频的路径的?
我会使用 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
;创建目标 table,加载文件:
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>
我需要将视频插入 oracle 数据库,这就是我正在尝试做的,我想知道它是否正确 我创建了这个 table :
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
我在一个用于存储图片的教程中遇到过这个,我不明白它是如何知道视频的路径的?
我会使用 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
;创建目标 table,加载文件:
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>