【发布时间】:2014-03-14 16:13:34
【问题描述】:
我有一个表 StaffMaster,其中包含 员工照片,该表的数据类型是 varbinary。所以,我想使用 c# 代码将此表导出为 csv 文件格式。即使我尝试通过 sql server 导出任务手动导出该表。但它显示以下错误。
- Validating (Error)
Messages
Error 0xc0208030: Data Flow Task: The data type for "input column
"StaffPhoto" (376)" is DT_IMAGE, which is not supported. Use DT_TEXT
or DT_NTEXT instead and convert the data from, or to, DT_IMAGE using
the data conversion component.
(SQL Server Import and Export Wizard)
我知道数据存储在二进制(字节[])中。但是,我想知道我是否可以将它转换为字符串,当我想将它导入到 sql server 数据库时,它应该转换为二进制。所以,我的数据不会丢失。图像大小可以是 100 kb 到 500 kb。
我无法将图像存储在 csv 文件之外。
我使用的是 SQL Server 2005。
【问题讨论】:
-
为什么不使用 nvarchar 来存储和检索数据
-
也许在将二进制数据写入 CSV 时将其编码为十六进制字符串,然后在导入时将其解码回来(如果您还需要导入)?将原始二进制数据放入 CSV 文件可能会(而且很可能会)弄乱 CSV 文件。
-
@dholakiyaankit 因为 nvarchar 支持 unicode 数据格式,每个字符分配 2 个字节的数据。如果我使用 nvarchar 而不是二进制,那么数据库大小将增加。例如,如果图像大小为 100 kb,则 nvarchar 数据类型可能在 sql 数据库中消耗 200 kb。所以,我害怕这个问题。如果 nvarchar 没有任何区别,则 nvarchar 数据类型没有问题。
-
你没有考虑清楚 - 你打算用二进制数据做什么?什么代码或程序会消耗它?该程序需要什么格式? 这是您需要写入 CSV 的格式。
-
如果您正在处理图像,我建议您选择文件夹选项,这总是会导致无聊,您的客户总是会给您打电话哦............ .它太慢了
标签: c# sql-server csv