将多个 PDF 从多个文件夹导入 SQL table。

Import multiple PDF's from Multiple folders, into a SQL table.

我需要将多个 PDF 文件从多个文件夹(共享目录)上传到 SQL table。完成此任务并使其自动化的最佳方法是什么? DB Table 结构如下所示> DB table format

文件列表是完整路径。 type 是文件所在的文件夹,File name 是文件名,Ext. 共享文件夹中的文件是扫描的 PDF。 17 个文件夹深。 PDF's in one folder 共享树如下所示: folder tree 这使用存储过程来完成,其中数据库 table 将被删除(因为另一个任务扫描 table 并将 pdf 散列到 CMR 中)并且共享文件夹被扫描并导入到 table。这失败了,失败点是 xp_cmdshell,我已经沿着这条路线添加了代理,但它仍然失败了命令。必须有更好的方法从这些文件夹上传多个 PDF,然后在移动后从文件夹中删除文件。 有什么建议么?或者指出正确的方向?

您需要先创建两个字符串变量。第一个将包含共享文件夹树的基本文件夹的路径。我叫我的 PathToBaseFolder。第二个将用于存储当前文件的完整路径。我叫我的 FullyQualifiedFilePath。现在不需要给它一个值。

接下来,您需要创建一个 Foreach Loop Container。对于枚举器,选择 Foreach File Enumerator。接下来,展开 Expressions,并为 Directory 属性 添加一个新表达式。将表达式设置为您在上面创建的变量。

点击Ok,返回任务编辑器。在 Enumerator configuration 下,将您的文件掩码设置为 *.pdf,并确保 Fully qualifiedTraverse subfolders 都被选中。您不需要更改 Folder,因为我们上面定义的表达式将在运行时使用,但您可以根据需要更改。您的 Collection 选项卡现在应该如下所示:

单击循环编辑器 window 左侧的 Variable Mappings 选项卡。单击文件路径变量 Variable 和 select 下的空白矩形,并确保将其设置为索引 0。

在循环编辑器 window 中单击 Ok。现在您有一个循环任务,它将为您提供 \network-machine\shared_folder 下每个 *.pdf 的完整路径。循环的每次迭代都会更改 FullyQualifiedFilePath 变量的值。

从这一点来看,如果您只想将文件路径存储到第一段的 table 中,您可以在循环中创建一个 Execute SQL 任务,并使用您的文件路径变量作为输入之一。

将 .pdf 作为 BLOB 保存到数据库中 table 与此类似,但很可能您必须使用脚本任务将每个 .pdf 加载到内存中,然后插入 BLOB。