Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用SSIS导入时是否可以添加标识列?_Sql_Ssis_Bids - Fatal编程技术网

Sql 使用SSIS导入时是否可以添加标识列?

Sql 使用SSIS导入时是否可以添加标识列?,sql,ssis,bids,Sql,Ssis,Bids,我是SSIS新手,正在尝试安排一些文本文件的自动导入。使用大量测试数据示例正确解释所有列。但是,我的数据没有可以用作主键的标识列。我希望在导入时添加一个列作为标识。这可能吗?提前感谢。我通过提前创建数据库表,其中包含identity列和文本文件中的其余字段来完成此操作。然后,在SSIS包中,将所有文本文件数据字段映射到相应的数据库字段。将数据插入其余字段时,数据库将处理标识字段 CREATE TABLE table_name ( Id [int] IDENTITY(1,1) NOT NUL

我是SSIS新手,正在尝试安排一些文本文件的自动导入。使用大量测试数据示例正确解释所有列。但是,我的数据没有可以用作主键的标识列。我希望在导入时添加一个列作为标识。这可能吗?提前感谢。

我通过提前创建数据库表,其中包含identity列和文本文件中的其余字段来完成此操作。然后,在SSIS包中,将所有文本文件数据字段映射到相应的数据库字段。将数据插入其余字段时,数据库将处理标识字段

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;
}

几点。首先(希望我在这里不是吹毛求疵),根据定义,标识列是由数据库实现和管理的。您可能可以基于数据构建某种代理键,但这也带来了它自己的问题。我也有同样的想法,但我只添加了一列作为标识,而不是所有列。我的数据结构没有改变,所以这对我来说非常适合!非常感谢。