如何将视频插入 Oracle db

Posted

技术标签:

【中文标题】如何将视频插入 Oracle db【英文标题】:how to insert a video into Oracle db 【发布时间】:2022-01-12 01:06:43 【问题描述】:

我需要在 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

我在一个用于存储图片的教程中遇到这个,我不明白它是如何知道视频的路径的?

【问题讨论】:

尝试时遇到什么错误?如果调用SQL*Loadervid.mp4 不在当前目录中,则需要在数据文件中指定完整路径。 这是什么? oracle表格什么的?你能编辑你的标签吗? 【参考方案1】:

我会使用 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>

【讨论】:

感谢您的回答,这个指令(l_dir varchar2(10) := 'EXT_DIR'; )是指我系统中的视频目录,还是我们在oracle中创建的目录?跨度> 不客气。 EXT_DIR 是 Oracle 目录的名称(这是我作为我发布的代码的第一部分创建的)。物理目录是 C:\TEMP 没问题;如果有帮助,我很高兴。 您应该授予数据库中存在的权限(并以用户身份连接)。我使用了示例 SCOTT 模式,所以 - 显然 - 我使用了 SCOTT。我不知道你有哪个用户,但你应该知道。 因为你应该永远不要使用 SYS 或 SYSTEM 用户做任何事情(除了系统管理)。

以上是关于如何将视频插入 Oracle db的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Node.js 将多条记录插入 Oracle DB

请问如何在视频编辑中插入动态文字?

如何使用 sqlplus 终端将大量数据插入 Oracle DB 中的“长”数据类型?

如何将这种特定格式的当前日期正确设置到 Oracle DB 上的这个插入查询中? [关闭]

使用 HSQL DB 测试插入所有 Oracle 查询

如何在 oracle 11g 中使用 exp 命令将表行导出为插入格式?