我知道这是SO
标准的一般性问题,但我读过几篇关于类似主题的文章,每个人都说“这是一个划痕工作”,但我想的更多这样做我弄得更困惑。我需要找到一些解决方案,最后它可能是任何解决方案,但如果它确实是标准和简单的东西,我想至少得到我应该遵循的基本步骤来做到这一点甚至更好 - 一个教程或类似的东西涵盖与我类似的主题。
我拥有的 - 一个包含3个表的继承数据库,其中有一列Picture
。在旧数据库中,此列是String
字段,其中包含文件源的完整路径,例如C:\Images\SomeFolder\SomeImage.jpeg
。还有一个新的数据库,其中同一列Picture
也存在,但它只保留图片的名称。这些路径位于Config
表中,但我认为这并不重要,因为路径将在传输脚本中进行硬编码(或者我认为这是要完成的方法)。
所以在旧数据库和新数据库之间发生了这个传输脚本,我需要这个逻辑步骤:
Picture
列File.Exist
)Config
中获取)Picture
Picture
列的所有表执行此操作(再次硬编码,因为只有3个表)我已经阅读了很多关于BulkCopy
的内容,但到目前为止,我认为这不是我应该寻找的解决这个问题的方法。我有一些棘手的部分 - 没有必要成为与从旧数据库中获取的路径相关联的现有图像,因此如果是这种情况,我必须继续,但也记录该信息。此外,即使不是可能发生,在执行期间,更确切地说,在将图像文件再次复制到新位置期间,可能会导致错误,我想我应该只记录错误但不太确定,因为有实际图像。< / p>
但是 - 您建议采用什么方法使其正常工作?使用什么,是否有为我应该知道的这种情况设计的东西。我现在唯一知道的就是我要用C#
写出来。它很可能是Command Line
应用程序,可能需要以.exe
运行,我不确定这是否会造成任何困难。
P.S
我不确定这对当前情况是否重要,但新应用程序是使用ADO.NET Entity Framework
代码第一种方法构建的。开发服务器为MS SQL Server 2012
,但工作服务器将为MS SQL Server 2008
。我不确定这是否也是一个问题,因为现在我们没有任何兼容性问题,除了不同的排序规则,但这是固定的。
答案 0 :(得分:3)
我更倾向于潜水解决方案。
设计一个名为PictureRepository
表的中间表,此表将包含从源读取数据所需的所有列,所有列都需要保存在目标表和上额外的列,如状态,错误说明和 ...
Reading Data
(通过阅读源表填充PictureRepository)。Validating Data
(通过阅读PictureRepository验证图片存在和...。如果需要,更新统计信息和错误描述列)Operation
(创建新图像文件名并更新PictureRepository中的列)Saving data
(从PictureRepository读取没有错误数据行并将它们保存到目标表)报告将通过从PictureRepository读取错误数据来完成 您可以根据问题的复杂性和经验(读取数据和保存数据可以通过存储过程完成)来完成C#或SQL中的各个阶段。
希望是有帮助的