如何将视频插入Oracle数据库?现有操作是否正确及路径如何指定
SQL*Loader识别视频路径的逻辑
SQL*Loader的LOBFILE函数默认从执行sqlldr命令时的当前工作目录查找数据文件中填写的视频文件名,你示例中的vid.mp4需要放在执行sqlldr命令的目录下才能被正常读取。如果要指定非当前目录的视频文件,有两种配置方式:
- 直接在数据文件中写视频的绝对路径,例如把
video.txt内容改为1,/data/oracle_video/vid.mp4 - 在控制文件中配置固定路径前缀,示例如下:
video LOBFILE(CONSTANT '/data/oracle_video/') || video_filename TERMINATED BY EOF
现有配置的问题修正
你当前的控制文件与建表逻辑不匹配,需要调整后才能正常使用:
- 目标表名错误:你创建的存储表名为
video,但控制文件中写的是INTO TABLE tab1,需要修改为对应表名 - 字段映射不匹配:
video表的字段为vid_id、vid_name、video,控制文件中的字段名、数量都不对应,修正后的控制文件参考:
LOAD DATA INFILE 'video.txt' INTO TABLE video FIELDS TERMINATED BY ',' ( vid_id, vid_name FILLER CHAR(100), -- 如果你需要把文件名存入vid_name字段,去掉FILLER关键字即可 video_filename FILLER CHAR(100), video LOBFILE(video_filename) TERMINATED BY EOF )
- 如果需要将视频文件名存入
vid_name字段,同步调整数据文件即可:- 数据文件
video.txt修改为1,vid.mp4,vid.mp4,或自定义视频名称改为1,活动宣传视频,vid.mp4 - 去掉控制文件中
vid_name后的FILLER关键字
- 数据文件
注意:如果视频路径包含空格、特殊字符,需要在数据文件中将路径部分用双引号包裹,避免SQL*Loader分割字段时出错。
内容的提问来源于stack exchange,提问作者amilana
相关产品推荐
相关产品推荐

