如何将视频插入 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*Loader
时vid.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 中的“长”数据类型?