质量控制:根据 table 中的文件名检查文件夹中的文件名
Quality Control: Check file names in a folder against filenames in a table
我在 Oracle 数据库中有一个记录系统。记录系统用于检索pdf、jpeg、视频文件等
设计非常简单:有一个名为 infrastructure_records
的 table,其中有一列包含指向文件的超链接:
+------------+------------------------------------------+
| project_id | file_path |
+------------+------------------------------------------+
| Project 1 | X:\Records_System\Folder A\Project 1.pdf |
| Project 2 | X:\Records_System\Folder B\Project 2.jpg |
| Project 3 | X:\Records_System\Folder C\Project 3.mpg |
+------------+------------------------------------------+
我们使用前端从文件路径创建可点击的超链接。使用超链接,用户可以导航到文件。
问题:
我想根据数据库中的文件列表检查网络驱动器上的文件 table。
如果我可以从网络中获取文件列表并存入数据库 table,那么我就可以很容易地查询错误。
但是,我不确定在 Oracle table 中创建文件列表的最佳方法是什么。
- 网络驱动器上大约有 60,000 个文件,位于各种子文件夹中
- 这些文件不存在于与 Oracle 数据库相同的服务器上(我不是 I.T. 人,所以我对这类事情一无所知)。但是,我确实在计算机上的 Windows Explorer 中映射了驱动器,我将从中 运行ning 查询。
- 此 QC 操作 运行 大约每月一次。
- 性能不是一个大问题。文件列表不需要是 "live",尽管那肯定是一个加号。
- 我可以想出使用 VBA MS Office 或类似软件中的脚本编写的快捷方式。但是,我想到可能有更专业或开箱即用的方法来执行此操作(可能使用内置的 Oracle 功能)。
如何优雅地将网络驱动器上的文件列表插入 Oracle table?
1) 在(比如)C:\TEMP 中创建一个名为 dirlist.bat
的批处理文件
@echo off
dir /s /b X:\Records_System
2) 创建一个将使用该文件进行预处理的外部 table
CREATE TABLE dir_listing
( file_name VARCHAR2(255) )
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY temp
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE
PREPROCESSOR temp: 'dirlist.bat'
FIELDS TERMINATED BY WHITESPACE
)
LOCATION ('dummy_file.txt')
)
REJECT LIMIT UNLIMITED;
其中 'temp' 是一个 oracle 目录
create directory temp as 'c:\temp';
grant read, write, execute on directory temp to ...
和'dummy_file.txt'是任何现有文件
现在,您只需像查询其他 table 一样查询 table dir_listing 即可获取文件列表
我在 Oracle 数据库中有一个记录系统。记录系统用于检索pdf、jpeg、视频文件等
设计非常简单:有一个名为 infrastructure_records
的 table,其中有一列包含指向文件的超链接:
+------------+------------------------------------------+
| project_id | file_path |
+------------+------------------------------------------+
| Project 1 | X:\Records_System\Folder A\Project 1.pdf |
| Project 2 | X:\Records_System\Folder B\Project 2.jpg |
| Project 3 | X:\Records_System\Folder C\Project 3.mpg |
+------------+------------------------------------------+
我们使用前端从文件路径创建可点击的超链接。使用超链接,用户可以导航到文件。
问题:
我想根据数据库中的文件列表检查网络驱动器上的文件 table。
如果我可以从网络中获取文件列表并存入数据库 table,那么我就可以很容易地查询错误。
但是,我不确定在 Oracle table 中创建文件列表的最佳方法是什么。
- 网络驱动器上大约有 60,000 个文件,位于各种子文件夹中
- 这些文件不存在于与 Oracle 数据库相同的服务器上(我不是 I.T. 人,所以我对这类事情一无所知)。但是,我确实在计算机上的 Windows Explorer 中映射了驱动器,我将从中 运行ning 查询。
- 此 QC 操作 运行 大约每月一次。
- 性能不是一个大问题。文件列表不需要是 "live",尽管那肯定是一个加号。
- 我可以想出使用 VBA MS Office 或类似软件中的脚本编写的快捷方式。但是,我想到可能有更专业或开箱即用的方法来执行此操作(可能使用内置的 Oracle 功能)。
如何优雅地将网络驱动器上的文件列表插入 Oracle table?
1) 在(比如)C:\TEMP 中创建一个名为 dirlist.bat
的批处理文件@echo off
dir /s /b X:\Records_System
2) 创建一个将使用该文件进行预处理的外部 table
CREATE TABLE dir_listing
( file_name VARCHAR2(255) )
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY temp
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE
PREPROCESSOR temp: 'dirlist.bat'
FIELDS TERMINATED BY WHITESPACE
)
LOCATION ('dummy_file.txt')
)
REJECT LIMIT UNLIMITED;
其中 'temp' 是一个 oracle 目录
create directory temp as 'c:\temp';
grant read, write, execute on directory temp to ...
和'dummy_file.txt'是任何现有文件
现在,您只需像查询其他 table 一样查询 table dir_listing 即可获取文件列表