zoukankan      html  css  js  c++  java
  • 在Package中处理 bit列

    SQL Server没有boolean类型,使用bit 类型来代替,bit类型有两个值:0 和 1,而SSIS package中有boolean类型,SSIS自动将bit 类型转换成boolean类型,将 1 转换成 True,0 转换成False。在SSIS Package中,如果Table column 的 data type 为 bit,那么Package在输出时自动进行转化,将 1 转换成 True,0 转换成False。

    如果要将SQL Server 的Bit 类型转换成Int 类型(0,1),或转换成 String 类型(“0” 或 “1”),而不是(“True”或“False”),需要增加一个Derived Column
    IsFlagged_bit = [IsFlagged] ? (DT_UI1)1 : (DT_UI1)0

    示例

    1,Code

    复制代码
    create table dbo.TestBit
    (
    ID int,
    name varchar(10),
    IsMerged bit
    )
    go
    
    insert into dbo.TestBit
    values(1,'a',0),(2,'b',1)
    go
    
    --get data
    select *
    from dbo.TestBit
    复制代码

    2,使用OLE DB Source 来获取数据

    点击Preview...,看到IsMerged 字段的值不是0 或1, 而是转换成True 或False。

    3,将bit 类型的数据插入到smallint(int,或 bigint)

    使用OLEDB destination,将数据插入到 table dbo.TestBit_Target。

    复制代码
    create table dbo.TestBit_Target
    (
    ID int,
    name varchar(10),
    IsMerged smallint
    )
    go
    复制代码

    Mapping 关系是:

    4,查看插入的结果,Bit 为1 的数据转换成 smallint时,由1 转变成 -1 。这是一个错误。

    5,Workaround : 使用derived column, Expression 是:(DT_I2)(IsMerged ? 1 : 0)

    参考文档:

    SSIS: True/False and 1/0 values on Bit Columns

  • 相关阅读:
    nginx-rtmp-module搭建流媒体服务器
    rabbitmq安装
    opencv+python (3)
    linux命令
    mysql语句概览
    BUUCTF V&N-misc内存取证
    2018 HEBTUCTF 部分misc
    2020 安恒2月月赛 misc
    2018.6.1 铁三数据赛 复现
    2020 i春秋新春战疫公益赛 misc
  • 原文地址:https://www.cnblogs.com/xieyulin/p/7050677.html
Copyright © 2011-2022 走看看