用于DataBase数据和文件复制的书面传输脚本

时间:2013-03-30 17:55:57

标签: c# sql sql-server entity-framework ado.net

我知道这是SO标准的一般性问题,但我读过几篇关于类似主题的文章,每个人都说“这是一个划痕工作”,但我想的更多这样做我弄得更困惑。我需要找到一些解决方案,最后它可能是任何解决方案,但如果它确实是标准和简单的东西,我想至少得到我应该遵循的基本步骤来做到这一点甚至更好 - 一个教程或类似的东西涵盖与我类似的主题。

我拥有的 - 一个包含3个表的继承数据库,其中有一列Picture。在旧数据库中,此列是String字段,其中包含文件源的完整路径,例如C:\Images\SomeFolder\SomeImage.jpeg。还有一个新的数据库,其中同一列Picture也存在,但它只保留图片的名称。这些路径位于Config表中,但我认为这并不重要,因为路径将在传输脚本中进行硬编码(或者我认为这是要完成的方法)。

所以在旧数据库和新数据库之间发生了这个传输脚本,我需要这个逻辑步骤:

  1. Picture
  2. 中获取值
  3. 检查是否存在现有文件(我想象的File.Exist
  4. 更改图像文件的名称(命名有新的约定,因此必须相应地更改所有名称)
  5. 将图像文件复制到目标文件夹(路径在脚本中硬编码或从表Config中获取)
  6. 在新数据库列Picture
  7. 中复制新的图像文件名
  8. 对表中的所有行以及Picture列的所有表执行此操作(再次硬编码,因为只有3个表)
  9. 某些报告未成功复制的文件和详细信息(表格,行,文件名称 - 我不确定最适合在此处显示的内容)
  10. 我已经阅读了很多关于BulkCopy的内容,但到目前为止,我认为这不是我应该寻找的解决这个问题的方法。我有一些棘手的部分 - 没有必要成为与从旧数据库中获取的路径相关联的现有图像,因此如果是这种情况,我必须继续,但也记录该信息。此外,即使不是可能发生,在执行期间,更确切地说,在将图像文件再次复制到新位置期间,可能会导致错误,我想我应该只记录错误但不太确定,因为有实际图像。< / p>

    但是 - 您建议采用什么方法使其正常工作?使用什么,是否有为我应该知道的这种情况设计的东西。我现在唯一知道的就是我要用C#写出来。它很可能是Command Line应用程序,可能需要以.exe运行,我不确定这是否会造成任何困难。

    P.S

    我不确定这对当前情况是否重要,但新应用程序是使用ADO.NET Entity Framework代码第一种方法构建的。开发服务器为MS SQL Server 2012,但工作服务器将为MS SQL Server 2008。我不确定这是否也是一个问题,因为现在我们没有任何兼容性问题,除了不同的排序规则,但这是固定的。

1 个答案:

答案 0 :(得分:3)

我更倾向于潜水解决方案。

设计一个名为PictureRepository表的中间表,此表将包含从源读取数据所需的所有列,所有列都需要保存在目标表和上额外的列,如状态,错误说明和 ...

  1. Reading Data(通过阅读源表填充PictureRepository)。
  2. Validating Data(通过阅读PictureRepository验证图片存在和...。如果需要,更新统计信息和错误描述列)
  3. Operation(创建新图像文件名并更新PictureRepository中的列)
  4. Saving data(从PictureRepository读取没有错误数据行并将它们保存到目标表)
  5. 报告将通过从PictureRepository读取错误数据来完成 您可以根据问题的复杂性和经验(读取数据和保存数据可以通过存储过程完成)来完成C#或SQL中的各个阶段。

    希望是有帮助的