Sql 使用SSIS导入时是否可以添加标识列?
我是SSIS新手,正在尝试安排一些文本文件的自动导入。使用大量测试数据示例正确解释所有列。但是,我的数据没有可以用作主键的标识列。我希望在导入时添加一个列作为标识。这可能吗?提前感谢。我通过提前创建数据库表,其中包含identity列和文本文件中的其余字段来完成此操作。然后,在SSIS包中,将所有文本文件数据字段映射到相应的数据库字段。将数据插入其余字段时,数据库将处理标识字段Sql 使用SSIS导入时是否可以添加标识列?,sql,ssis,bids,Sql,Ssis,Bids,我是SSIS新手,正在尝试安排一些文本文件的自动导入。使用大量测试数据示例正确解释所有列。但是,我的数据没有可以用作主键的标识列。我希望在导入时添加一个列作为标识。这可能吗?提前感谢。我通过提前创建数据库表,其中包含identity列和文本文件中的其余字段来完成此操作。然后,在SSIS包中,将所有文本文件数据字段映射到相应的数据库字段。将数据插入其余字段时,数据库将处理标识字段 CREATE TABLE table_name ( Id [int] IDENTITY(1,1) NOT NUL
CREATE TABLE table_name
(
Id [int] IDENTITY(1,1) NOT NULL,
column_name2, -- From text file field 1
...
column_name3 data_type(size), -- text file field n
);
希望这有帮助。如果您在e的目标表中有一个标识列。GSSIS是数据流中的OLE目标,它通过从INSERT中省略列来很好地处理此问题,这是希望管理此列本身的数据库引擎所必需的,即。为插入的每条记录生成新编号 如果要对导入的所有记录进行编号,请参见e。G从第1行开始,SSIS中没有直接支持此功能的数据流组件。但是您可以很容易地将脚本组件添加到数据流中,该组件将添加一列,比如说
row_no
,然后使用以下代码(假设为C)作为语言设置:
int rowNo;
public override void PreExecute()
{
base.PreExecute();
rowNo = 0;
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
Row.rowno = ++rowNo;
}
几点。首先(希望我在这里不是吹毛求疵),根据定义,标识列是由数据库实现和管理的。您可能可以基于数据构建某种代理键,但这也带来了它自己的问题。我也有同样的想法,但我只添加了一列作为标识,而不是所有列。我的数据结构没有改变,所以这对我来说非常适合!非常感谢。