如何将视频插入 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>