Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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/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
Sql server SSIS转换时可能会丢失数据_Sql Server_Ssis_Etl - Fatal编程技术网

Sql server SSIS转换时可能会丢失数据

Sql server SSIS转换时可能会丢失数据,sql-server,ssis,etl,Sql Server,Ssis,Etl,使用SQL server 2014 ans SSI时,我在数据流中遇到以下问题: 数据源:出现错误“无法转换该值” 因为可能会丢失数据。” 以下是查询: SELECT ISNULL(M.ActiveLEDZones, '') [ActiveLEDZones__c] , M.Weight [Weight__c] , M.WeightStand [WeightStand__c] , M.wifi [WIFI__c] FROM [dbo].[ModelCompariso

使用SQL server 2014 ans SSI时,我在数据流中遇到以下问题:

数据源:出现错误“无法转换该值” 因为可能会丢失数据。”

以下是查询:

SELECT
    ISNULL(M.ActiveLEDZones, '') [ActiveLEDZones__c]
    , M.Weight [Weight__c]
    , M.WeightStand [WeightStand__c]
    , M.wifi [WIFI__c]
FROM [dbo].[ModelComparison] M 
WHERE CAST(M.CreateDate AS DATE) >= '2012-01-01'
使用不同的方法,我可以得到以下值:

ActiveLEDZones__c
3
126
28
36
12
9
384
72
tbd
128
8
2
14
6
NA
16

1
10
0
N/A
32
18
5
64
4
表格资料:

Source: varchar(5)
Target: nvarchar(5)
我正在SSIS中使用数据转换:


< P>你必须考虑2点:

1st

在查询中使用
ISNULL(M.ActiveLEDZones,”)[ActiveLEDZones\uuu c]
时,此函数不会采用原始列数据长度
varchar(5)
,它将采用此查询中发现的可能导致类似问题的最长长度,请尝试使用
CAST
函数来精确列数据长度

CAST(ISNULL(M.ActiveLEDZones, '') AS VARCHAR(5)) [ActiveLEDZones__c]
附加测试

使用以下查询创建表并检查创建的表结构:

SELECT
ISNULL(M.ActiveLEDZones, '') [ActiveLEDZones__c]
, M.Weight [Weight__c]
, M.WeightStand [WeightStand__c]
, M.wifi [WIFI__c]
INTO tblTemp_1
FROM [dbo].[ModelComparison] M 
WHERE CAST(M.CreateDate AS DATE) >= '2012-01-01'
以及以下

SELECT
CAST(ISNULL(M.ActiveLEDZones, '') AS VARCHAR(5)) [ActiveLEDZones__c]
, M.Weight [Weight__c]
, M.WeightStand [WeightStand__c]
, M.wifi [WIFI__c]
INTO tblTemp_2
FROM [dbo].[ModelComparison] M 
WHERE CAST(M.CreateDate AS DATE) >= '2012-01-01'
您将看到tblTemp_1
[ActiveLEDZones_uc]
列与tblTemp_1不同
[ActiveLEDZones\uuu c]

第二名

您可以使用
CAST(ISNULL(M.ActiveLEDZones,”)作为NVARCHAR(5))
而不是
ISNULL(M.ActiveLEDZones,”)
因此源列将被读取为
NVARCHAR(5)
,并且不需要使用
数据转换组件

查询将被删除

SELECT
CAST(ISNULL(M.ActiveLEDZones, '') AS NVARCHAR(5)) [ActiveLEDZones__c]
, M.Weight [Weight__c]
, M.WeightStand [WeightStand__c]
, M.wifi [WIFI__c]
FROM [dbo].[ModelComparison] M 
WHERE CAST(M.CreateDate AS DATE) >= '2012-01-01'

你必须考虑2点:

1st

在查询中使用
ISNULL(M.ActiveLEDZones,”)[ActiveLEDZones\uuu c]
时,此函数不会采用原始列数据长度
varchar(5)
,它将采用此查询中发现的可能导致类似问题的最长长度,请尝试使用
CAST
函数来精确列数据长度

CAST(ISNULL(M.ActiveLEDZones, '') AS VARCHAR(5)) [ActiveLEDZones__c]
附加测试

使用以下查询创建表并检查创建的表结构:

SELECT
ISNULL(M.ActiveLEDZones, '') [ActiveLEDZones__c]
, M.Weight [Weight__c]
, M.WeightStand [WeightStand__c]
, M.wifi [WIFI__c]
INTO tblTemp_1
FROM [dbo].[ModelComparison] M 
WHERE CAST(M.CreateDate AS DATE) >= '2012-01-01'
以及以下

SELECT
CAST(ISNULL(M.ActiveLEDZones, '') AS VARCHAR(5)) [ActiveLEDZones__c]
, M.Weight [Weight__c]
, M.WeightStand [WeightStand__c]
, M.wifi [WIFI__c]
INTO tblTemp_2
FROM [dbo].[ModelComparison] M 
WHERE CAST(M.CreateDate AS DATE) >= '2012-01-01'
您将看到tblTemp_1
[ActiveLEDZones_uc]
列与tblTemp_1不同
[ActiveLEDZones\uuu c]

第二名

您可以使用
CAST(ISNULL(M.ActiveLEDZones,”)作为NVARCHAR(5))
而不是
ISNULL(M.ActiveLEDZones,”)
因此源列将被读取为
NVARCHAR(5)
,并且不需要使用
数据转换组件

查询将被删除

SELECT
CAST(ISNULL(M.ActiveLEDZones, '') AS NVARCHAR(5)) [ActiveLEDZones__c]
, M.Weight [Weight__c]
, M.WeightStand [WeightStand__c]
, M.wifi [WIFI__c]
FROM [dbo].[ModelComparison] M 
WHERE CAST(M.CreateDate AS DATE) >= '2012-01-01'

需要明确的是,您正在将
ActiveLEDZones\uuu c
varchar(5)
转换为
nvarchar(5)
?数据流中的哪个组件产生了错误?源、转换或目标?是的,我正在将ActiveLEDZones_uuC从varchar(5)转换为nvarchar(5),而给我错误的组件是源任务。如果取出数据转换组件,会发生什么?我认为varchar会隐式地转换为nvarchar。另外,源表中的
CreateDate
列的数据类型是什么?要清楚,您正在将
ActiveLEDZones\uuuu c
varchar(5)
转换为
nvarchar(5)
?数据流中的哪个组件产生错误?源、转换或目标?是的,我正在将ActiveLEDZones_uuC从varchar(5)转换为nvarchar(5),而给我错误的组件是源任务。如果取出数据转换组件,会发生什么?我认为varchar会隐式地转换为nvarchar。另外,源表中
CreateDate
列的数据类型是什么?