我正在尝试将数据从SQL Server导出到平面文件中。其中包括一个位列0/1,我需要它保持原样,但它被导出为布尔值TRUE/FALSE,这导致ETL批量插入失败。 我尝试将数据映射更改为单字节整数、浮点数、数字、字符串、文本,希望能得到简单的0/1,但都没有成功。 欢迎提供任何解决方法(除了替换结果文件中的文本)。
在你的select语句中添加IIF函数,将Boolean转换为0/1以进行导出: SELECT Name, Code ,IIF(EuroZone = 1, 1, 0) AS EuroZone ,IIF(Visible= 1, 1, 0) AS Visible FROM your_table
问题在于,SQL Server 有一个位数据类型。它没有布尔类型,而 SSIS 使用的是 .Net 数据类型,而不是 SQL 数据类型。它支持布尔类型,而不是位类型。虽然它有内置的转换来解决这样的问题。所以我认为,你需要使用派生列来解决这个问题。