我有一个MS Access数据库,我们正在将其转换为SQL Server后端。此数据库有一个Attachments
表,其中包含几个简单列:
PK, FK to MainTable.RecordID, Description, filename
附件存储在文件共享中。VBA代码使用硬编码文件路径和ShellExecute
将附件保存到RecordID
子文件夹下的目录中。
我们将使用文件流在SQL Server中存储附件。
我需要将这些附件从文件共享移动到SQL Server,同时保持RecordID
的完整性。SQL Server表和列已设置。
这些附件的扩展名不同(.msg、.doc、.xlsx、.pdf)
我一直在研究“OPENROWSET”,但我看到的每个示例都只使用一个文件。
我一直在调查SSMA,但找不到我想要的。
任何我可以使用/重新利用的参考/参考文章或代码资源都将不胜感激。
1条答案
按热度按时间z0qdvdin1#
听起来您想编写一个SQL存储过程,它将查找给定文件路径中的所有文件,遍历这些文件,并将文件插入表中。
这篇文章将在总体上有所帮助:https://www.mssqltips.com/sqlservertip/5432/stored-procedure-to-import-files-into-a-sql-server-filestream-enabled-table/
本文是关于xp_dirtree:https://www.sqlservercentral.com/blogs/how-to-use-xp_dirtree-to-list-all-files-in-a-folder的
下面是从SQL读取文件系统的示例代码。这是未经测试的代码,您需要根据需要进行修改,但它可以让您了解如何进行循环和读入文件。
我想您只需要使用上面的xp_dirtree命令解析根目录。这将显示应包含“RecordID”的所有子目录。将RecordID读入变量,然后解析每个子目录以获得实际文件。如果需要更详细的代码,则必须显示目录结构和目标表的一些示例。