我需要将多个文件夹(共享目录)中的多个PDF文件上载到SQL表中。完成此任务并将其自动化的最佳方法是什么?数据库表结构看起来像这样> DB table format
文件列表是完整路径。 类型是文件所在的文件夹,文件名是文件名和Ext。 共享文件夹中的文件是扫描的PDF。 17个文件夹深。 PDF's in one folder 共享树如下所示: folder tree 这可以通过存储过程来完成,在该过程中将删除DB表(因为另一个任务将扫描该表并将pdf散列到CMR中),并将共享文件夹扫描并导入到该表中。这失败了,失败点是xp_cmdshell,我沿着添加代理的那条路线走了,它仍然使命令失败。必须有更好的方法从这些文件夹上载多个PDF,然后在移动它们后从文件夹中删除文件。 有什么建议么?或指向正确的方向?
答案 0 :(得分:0)
您首先要创建两个字符串变量。第一个将包含共享文件夹树的基本文件夹的路径。我叫我的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。