2016-08-17 12 views
-2

직원 및 비 직원 테이블이 있습니다 (뷰에서 데이터를 가져 오는 중입니다).두 테이블의 데이터를 하나의 테이블로 병합하십시오.

이제 Employee 및 Non Employee 데이터를 모두 보유하는 단일 테이블을 생성해야합니다. 나는 여기서 진전 할 수 없다.

DataMappingError

  • 이 실행 (오류)

    Messages • Error 0xc02020c5: Data Flow Task 1: Data conversion failed while converting column "Unit Number" (44) to column "Unit Number" (101). The conversion returned status value 2 and status text "The value could not be converted because of a potential loss of data.". (SQL Server Import and Export Wizard) • Error 0xc0209029: Data Flow Task 1: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "Data Conversion 0 - 0.Outputs[Data Conversion Output].Columns[Unit Number]" failed because error code 0xC020907F occurred, and the error row disposition on "Data Conversion 0 - 0.Outputs[Data Conversion Output].Columns[Unit Number]" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure. (SQL Server Import and Export Wizard) Error 0xc0047022: Data Flow Task 1: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Data Conversion 0 - 0" (85) failed with error code 0xC0209029 while processing input "Data Conversion Input" (86). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure. (SQL Server Import and Export Wizard)

답변

2

첫 번째 스크립트 새 테이블로 만들기 :

나는 수출입 작업을 사용하여 시도 할 때이 오류를 얻고있다 당신이 원하는 칼럼으로

CREATE TABLE dbo.Employees (
    COLUMN_A TYPE, 
    COLUMN_B VARCHAR(100) 
); 

그런 다음 이전 테이블을 선택하여 삽입합니다.

INSERT INTO dbo.Employees (COLUMN_A, COLUMN_B) 
    SELECT COLUMN_A, COLUMN_B FROM TABLE1 UNION ALL 
    SELECT COLUMN_A, COLUMN_B FROM TABLE2; 

가장 많이 쿼리 된 열에서 성능을 향상시키는 색인을 생성하십시오.

+0

위의 쿼리는 중복을 제거합니까? –

+0

위의 쿼리에서이 오류가 발생합니다. 데이터 유형 varchar (max)에서 varbinary (max) 로의 암시 적 변환이 허용되지 않습니다. CONVERT 함수를 사용하여이 쿼리를 실행합니다. –

1

세부 정보를 검토 한 후 "장치 번호"열의 데이터 형식이 다릅니다. 이 문제를 극복하려면 테이블의 데이터 유형을 동일하게 만들거나 데이터 유형이 높은 새 테이블을 작성한 다음 기존 테이블이 작을 경우 (즉, 테이블에 작은 int, 작은 int가있는 경우) 공통 테이블의 데이터 유형 smallint가됩니다.

+0

그래서이 경우에는 유닛 번호가 int이고 다른 테이블이 varchar (1)입니다. 공통 테이블 데이터 유형이 무엇인지 생각해보십시오. –

+0

이 경우 가장 좋은 방법은 모든 열을 VARCHAR로 유지하고 특정 열에 특정 데이터 형식이 있는지 확인한 다음 int, tinyint, smallint 등으로 적절히 변경합니다. –

1

varbinary 형식의 행을 varchar 또는 다른 데이터 형식에 삽입하면 암시 적 변환 문제가 발생합니다. 먼저 varbinary로 정의 된 열을 식별하고 cast를 cast (column_name을 varchar (100)로 사용)하면 문제가 해결됩니다.

+0

CONVERT (varchar (MAX) PictureName, 2)하지만 작동하지 않습니다 : ( –

+0

시도 캐스팅 (PictureName as varchar (max)). 작동합니다. –

1

왜 가져 오기 내보내기 마법사를 사용합니까? 당신의 테이블과 뷰가 동일한 데이터베이스에있는 경우

, 당신은 다음을 수행 할 수는 가져 오기 내보내기 작업을 사용하는 경우

INSERT INTO TABLE 
SELECT COL1, COL2....FROM VIEW 

, (소스 및 대상 데이터 형식 및 길이 일치를 보장하기위한 문자/VARCHAR/NCHAR 대상 열 길이가 원본보다 작 으면/nvarchar 잘림이 발생할 수 있습니다.

+0

예 동일한 데이터베이스에서 2보기가 있습니다. 단일 테이블에 두 개의 다른보기에서 데이터를 삽입 할 수 있습니까 위의 쿼리? –

+0

예, 귀하의보기를 결합하여 귀하의 T - SQL을 개발하고 위의 구문을 따르십시오. – p2k

+0

그 작품! 감사합니다 ..하지만 하나의 문제 : 첫 번째 테이블은 varbinary picturenames을했고 varchar로 변환 후 나는 ÿØÿà .. –