我们正在尝试使用 SSIS 包从平面文件将数据导入我们的 SQL 2005 数据库。
我们的数据库有一个 CLR 用户定义类型,用于保存一些相关信息,我们称之为 dbo.CustomType。
要在 SQL 中创建 dbo.CustomType 的对象,我可以执行以下操作:
DECLARE @Decimal1 DECIMAL(18,6),
@Int1 INT,
@Decimal2 DECIMAL(18,6),
@Int2 INT,
@Decimal3 DECIMAL(18,6)
SELECT @Decimal1 = 1.5,
@Int1 = 1,
@Decimal2 = 2.5,
@Int2 = 2,
@Decimal3 = 3
SELECT
CONVERT(
dbo.CustomType,
CONVERT(VARCHAR(20), @Decimal1) + ';' +
CONVERT(VARCHAR(20), @Decimal2) + ':' +
CONVERT(VARCHAR(2), @Int1) + ';' +
CONVERT(VARCHAR(20), @Decimal3) + ':' +
CONVERT(VARCHAR(2), @Int2)
)
在 SSIS 中,我有一个数据集,其中所有列都由变量表示,但是如何将它们组合起来并将它们转换为 dbo.CustomType?
====
更新:
在 OLE DB 命令对象而不是 OLE DB 目标中使用插入语句时,我能够插入自定义类型。
所以:
INSERT INTO Greg
VALUES (CONVERT(dbo.CustomType, '1;1:1;1:1;'))
有效,但是
INSERT INTO Greg
VALUES (Convert(dbo.Customtype, ?))
给出错误
[OLE DB 命令 [3103]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E21。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80040E21 描述:“转换规范的字符值无效”。
它似乎正在尝试将我的字符串列转换为字节流,但是每当我尝试在高级编辑器中将 Param_0 更改为 String 时,它都会不断变回字节流