如何解决当表格包含“图像”列时,如何将整个SQL Server表格导出为CSV?
我有一个具有以下设计的SQL Server表:
我需要将整个表导出为CSV文件,数据以纯文本格式显示如下:
当我在SSMS中使用“导入/导出”向导时,在CSV中得到以下结果:
如您所见,它不包含Image列中的实际二进制数据。
相反,它仅在每行中以纯文本形式表示System.Byte[]
。
过去,我直接从SSMS结果窗口中将文本复制/粘贴到记事本中,以手动生成CSV。
但是,此表太长了,而且图像太大,如果我现在尝试这样做,计算机的内存将耗尽。
必须有一种方法可以将二进制数据以0x1234ABCD
格式(十六进制)导出到CSV。
我该怎么办?
解决方法
如果您是开发人员,则可以创建小型C#应用程序,对二进制数据使用Base64编码。它将任何二进制数据转换为可读字符串。代码如下
编码
public static string Base64Encode(string plainText)
{
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
}
解码
public static string Base64Decode(string base64EncodedData)
{
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
}
,
根据丹·古兹曼(Dan Guzman)评论中的建议,我使用以下查询创建了一个新视图:
CREATE VIEW vwPhotosMen AS
SELECT SS,CONVERT(varchar(max),CONVERT(varbinary(MAX),PhotoMen,1),1) AS PhotoMen,Thumbnail,1) AS Thumbnail
FROM dbo.PhotosMen
然后,SSMS导出向导可以将数据从该视图正确导出到纯文本CSV文件中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。