2011-11-29 58 views
2

我正在创建一个SSIS作业,它将从SQL数据库中提取图片数据并将每张图片写入文件。我们有一个ID系统,将所有人员拍摄的图像直接存储到数据库字段中,但我们将转移到一个新系统,该系统将所有图像作为文件存储在用户ID的路​​径中。使用VB.net或C#(SSIS)将图像写入磁盘

我已经创建了我的主数据流,可以获取所有用户和正确的路径,但是我在编写将创建图像的脚本组件时遇到问题。我将图像数据作为一个字符串,但是如何使它在正确的路径下出现在文件中?

这是我目前有:

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
    Dim filesys, folder 
    filesys = CreateObject("Scripting.FileSystemObject") 
    If Not filesys.FolderExists("E:\\test\\" + Row.Folder) Then 
     folder = filesys.CreateFolder("E:\\test\\" + Row.Folder) 
    End If 
End Sub 

我在寻找最终的路径为: “E:\测试\” + Row.Folder + “\” + Row.CardholderID +”。 JPG”。这将更改为包含我们正在使用的程序所需的另一个文件夹。

我没有真正附加,所以无论是vb.net还是c#(ssis 2008)对我来说都很好,因为我不知道是否有偏好。

感谢您的任何帮助。

+1

对于使用脚本对象而不是内置的.net函数进行文件操作是否有特殊要求? –

+1

另外,当你说你有一个字符串中的图像数据,我不确定你的实际意思。这是实际的二进制jpeg数据以某种方式存储到字符串?它是什么样的格式?如果您有权访问流或字节数组中的原始二进制数据而不是字符串,那么使用它肯定会更容易。 –

回答

2
+0

我试图推出自己的产品,因为老实说,我不知道这些其他功能是否存在。我一直在使用SSIS一段时间,但主要是非常简单的东西来洗牌不同系统/数据库类型之间的数据。 感谢您的这些链接,他们会让我得到我需要的地方! –

2

首先,让我说,我认为billinkc有一个更好的解决方案,但我想回答你的问题.net部分无论如何。

这是一个失去如何做你想要的例子。一旦你回答了我在评论中提出的问题,我会更详细地更新它。

Dim dir As String = "e:\test\" & Row.Folder 

If Not IO.Directory.Exists(dir) Then 
    IO.Directory.CreateDirectory(dir) 
End If 
Dim fs As New IO.FileStream(IO.Path.Combine(dir, Row.CardHolderID & ".jpg"), IO.FileAccess.Write) 
Dim writer As New IO.BinaryWriter(fs) 
writer.Write(<Your data>) 

fs.Close() 
fs.Dispose() 
+0

谢谢,这对未来的商品也有用 –