如何在 MSSQL 中批量导入用户定义的格式化数据并存储为 varbinary(max)

Posted

技术标签:

【中文标题】如何在 MSSQL 中批量导入用户定义的格式化数据并存储为 varbinary(max)【英文标题】:How to bulk import as user defined formatted data and stores as a varbinary(max) in MSSQL 【发布时间】:2019-08-29 10:41:42 【问题描述】:

我想从几个表中进行选择,需要以分隔符分隔输出并将这些数据存储到声明为 varbinary(max) 的表字段中。

2018    | abc   | 2019-08-29
2018    | aab   | 2019-08-29
201907  | aab   | 2019-08-29

所需的输出格式

2018;abc;2019-08-29
2018;aab;2019-08-29
2019;aac;2019-08-29

我想将其作为 varbinary(max) 字段插入到数据库中。我该如何实现它。请为此建议我一个解决方案。任何有助于批量插入的工具?

【问题讨论】:

为什么要将分隔数据存储在表中?现在的数据有什么问题,您的 RDBMS 可以读取和使用它吗?我可以理解您希望以该格式保存 file,但您当然不想将这样的值存储在数据库中。 (另外要求一个工具来做到这一点对于 SO 来说是题外话)。 数据来自另一个数据库。我想将它作为 varbinary 存储到我的数据库中 '2018;abc;2019-08-29' 不是 varbinary。这看起来可能是 XY 问题的开始。 看起来像多个XY questions。有许多工具可用于 ETL 和批量插入。然而,大部分讨论都围绕着从一种表示形式转换为另一种表示形式。那么你的实际问题是什么?是关于工具还是如何在 select 语句中将多个字段/列组合成一列? 我需要将数据从一个数据库传输到另一个数据库。我尝试以逗号分隔格式(例如 nvarchar(max) )获取数据并将此数据转换为 varbinary(max) 并存储到目标表中。 【参考方案1】:

使用CONCAT()你可以实现你期望的格式:

SELECT CONCAT(LEFT(ColumnName1, 4), ';', ColumnName2, ';', ColumnName3)

【讨论】:

【参考方案2】:

试试这个:

SELECT LEFT(Column1, 4)+ ';'+ Column2+ ';'+Column3

【讨论】:

|| 不是有效的 T-SQL;它使用+

以上是关于如何在 MSSQL 中批量导入用户定义的格式化数据并存储为 varbinary(max)的主要内容,如果未能解决你的问题,请参考以下文章

请问MSSQL数据库在导出时,所有ID字段的标识全部由“是”变成“否”了,该怎么解决?

如何将excel中的数据导入hive仓库中

有没有办法将现有mssql备份文件bak格式,导入到mysql数据库中

如何实现mysql和mssql的数据同步

使用 Node mssql 包批量插入

批量删除MSSQL 中主外键约束