如何在 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字段的标识全部由“是”变成“否”了,该怎么解决?