我知道这是一个关于标准的一般性问题,SO
但我已经阅读了几篇关于类似主题的文章,每个人都说“这是一个临时工作”,但我越想办法做到这一点,我就越困惑. 我需要找到一些解决方案,最后它可能是任何解决方案,但如果它确实是标准和简单的东西,我想至少获得我应该遵循的基本步骤来做到这一点甚至更好 - 教程或类似的东西涵盖与我类似的主题。
我所拥有的 - 一个继承的数据库,其中有 3 个表,其中有一列Picture
。在旧数据库中,此列是一个String
包含文件源的完整路径的字段,例如C:\Images\SomeFolder\SomeImage.jpeg
. 还有一个新的数据库,其中Picture
也存在相同的列,但它只包含图片的名称。路径在Config
表格中,但我认为这并不重要,因为路径将在传输脚本中硬编码(或者我认为这是要完成的方法)。
所以在旧数据库和新数据库之间发生了这个传输脚本,我需要这个逻辑步骤:
- 从
Picture
列中获取值 - 检查是否存在现有文件(就像
File.Exist
我想象的那样) - 更改图像文件的名称(有新的命名约定,因此必须相应地更改所有名称)
- 将图像文件复制到目标文件夹(路径在脚本中硬编码或取自表格
Config
) - 在新的数据库列中复制新的图像文件名
Picture
- 对表中的所有行和所有具有
Picture
列的表执行此操作(再次硬编码,因为只有 3 个表) - 针对未成功复制的文件和详细信息的某种报告(表格、行、文件名 - 我不确定在这里显示什么最好)
我已经阅读了很多,BulkCopy
但到目前为止,我认为这不是我应该寻找的解决这个问题的方法。我有一些棘手的部分 - 不一定是与从旧数据库获取的路径相关联的现有图像,所以如果是这种情况,我必须继续,但还要记录该信息。此外,即使不可能发生,在执行过程中,更准确地说,在将图像文件再次复制到新位置期间,某些事情可能会导致错误,我想我应该只记录错误但不太确定,因为存在实际图像。
但是 - 您建议采用什么方法来实现这一点?使用什么,是否有专门为我应该知道的这种情况设计的东西。我现在唯一知道的就是我要把它写在C#
. 它很可能是Command Line
应用程序,可能需要运行.exe
,我不确定仅此一项是否会造成任何困难。
附言
我不确定这对当前情况是否重要,但新应用程序是使用ADO.NET Entity Framework
代码优先方法构建的。开发服务器是MS SQL Server 2012
,但工作服务器将使用MS SQL Server 2008
. 我不确定这是否也会成为问题,因为现在我们没有任何兼容性问题,除了不同的排序规则,但这已经解决了。