sql - 将多个文件夹中的多个 PDF 导入 SQL 表。
问题描述
我需要将多个文件夹(共享目录)中的多个 PDF 文件上传到 SQL 表中。完成此任务并使其自动化的最佳方法是什么?DB 表结构如下所示> DB 表格式
文件列表是完整路径。类型是文件夹,文件来自哪里,文件名是文件名和分机。共享文件夹中的文件是扫描的 PDF 文件。17 个文件夹深。 PDF 在一个文件夹 中的共享树如下所示: 文件夹树 这使用存储过程来完成,其中数据库表将被删除(因为另一个任务扫描表并将 pdf 散列到 CMR 中)并且共享文件夹被扫描并导入到表中。这失败了,失败点是 xp_cmdshell 并且我已经沿着添加代理的路线走下去,但它仍然使命令失败。必须有更好的方法从这些文件夹上传多个 PDF,然后在移动文件夹后从文件夹中删除文件。有什么建议么?或指出我正确的方向?
解决方案
您首先要创建两个字符串变量。第一个将包含您的共享文件夹树的基本文件夹的路径。我打电话给我的PathToBaseFolder
。第二个将用于存储当前文件的完整路径。我打电话给我的FullyQualifiedFilePath
。现在不需要给它一个价值。
接下来,您将要创建一个Foreach Loop Container
. 对于枚举器,选择Foreach File Enumerator
。接下来,展开Expressions
并为该Directory
属性添加一个新表达式。将表达式设置为您在上面创建的变量。
单击Ok
,返回任务编辑器。在 下Enumerator configuration
,将您的文件掩码设置为*.pdf
,并确保Fully qualified
和Traverse subfolders
都被选中。您不需要更改,Folder
因为我们上面定义的表达式将在运行时使用,但如果您愿意,您可以。您的Collection
选项卡现在应如下所示:
单击Variable Mappings
循环编辑器窗口左侧的选项卡。单击下方的空白矩形Variable
并选择您的文件路径变量,并确保将其设置为索引 0。
Ok
在循环编辑器窗口中单击。现在您有一个循环任务,它将为您提供 \network-machine\shared_folder 下每个 *.pdf 的完整路径。循环的每次迭代都会改变FullyQualifiedFilePath
变量的值。
从这一点开始,如果您只想将文件路径从第一段存储到表中,您将Execute SQL
在循环中创建一个任务,并将文件路径变量用作输入之一。
将 .pdf 作为 BLOB 保存到数据库表中是类似的,但很可能您必须使用脚本任务将每个 .pdf 加载到内存中,然后插入 BLOB。
推荐阅读
- c# - 如何在列表框中获取特定字符
- php - Laravel:有没有办法删除数据库查询子句?
- llvm - macOS homebrew llvm clang tidy 缺少一些检查
- javascript - 谢谢 URL 没有在 iframe 表单之外加载
- android - 在 Flutter 项目的 android studio 上初始化 Gradle 将永远存在
- android - Flutter 在 android Barcode Scanner 上隐藏屏幕键盘
- r - 从 DT 中的选定行计算累积值
- java - 侦探没有传播跟踪 ID
- firebase - Firebase 动态链接链接统计
- python - 在同一 IP (Apache) 的不同 virtualenv 中为多个 Django 项目提供服务