2014-10-22 4 views
1

내가 ... 그것은 나에게이 오류 메시지주고 어떤 이유로 내 CREATE TABLE에서 null 값에 문제가있어 : 주 1형식 불일치 Null 값의 SQL

메시지 4864, 수준 16, 줄 73
행 4, 열 7 (Manager)에 대한 대량로드 데이터 변환 오류 (지정된 코드 페이지에 대해 유형이 일치하지 않거나 유효하지 않은 문자)입니다.

여기 내 코드와 내가 사용하고 데이터의 :

CREATE TABLE SalesReps 
(
    EmpNum  SMALLINT NOT NULL , 
    Name  VARCHAR(20) NOT NULL, 
    Age   TINYINT  NOT NULL, 
    RepOffice TINYINT  NULL, 
    Title  VARCHAR(20) NULL, 
    HireDate DATE, 
    Manager  INT   NULL, 
    Quota  MONEY  NULL, 
    Sales  MONEY  DEFAULT 0 
) 

BULK INSERT SalesReps 
FROM 'C:\Users\Steve\Desktop\salesreps.txt' 
WITH (FIELDTERMINATOR = '|', 
     ROWTERMINATOR = '\n') 

데이터 :

105|Bill Adams|37|13|Sales Rep|02/12/88|104|350000.00|367911.00 
109|Mary Jones|31|11|Sales Rep|10/12/89|106|300000.00|392725.00 
102|Sue Smith|48|21|Sales Rep|12/10/86|108|350000.00|474050.00 
106|Sam Clark|52|11|VP Sales|06/14/88|NULL|275000.00|299912.00 
104|Bob Smith|33|12|Sales Mgr|05/19/87|106|200000.00|142594.00 
101|Dan Roberts|45|12|Sales Rep|10/20/86|104|300000.00|305673.00 
110|Tom Snyder|41|NULL|Sales Rep|01/13/90|101|NULL|75985.00 
108|Larry Fitch|62|21|Sales Mgr|10/12/89|106|350000.00|361865.00 
103|Paul Cruz|29|12|Sales Rep|03/01/87|104|275000.00|286775.00 
107|Nancy Angelli|49|22|Sales Rep|11/14/88|108|300000.00|186042.00 

사람이 도와주세요 수는? 다른 불일치 페이지를 살펴 보았지만 많은 도움이되지 않습니다. 나는 이것을 며칠 동안 붙들 렸습니다.

+4

"110 | Tom Snyder | 41 || Sales Rep | 01/13/90 | 101 || 75985.00"파일에서 모든 NULL 값을 제거하면됩니다. 나는 그들이 일반적인 문자열로 취급된다고 생각한다. – Multisync

+4

문자열 값 NULL (db 값 NULL과 아무 관계도 없다)은 정수로 변환 될 수 없다. 대량 가져 오기를 중단 할 가능성이있는이 값입니다. – paqogomez

+0

RDBMS에 태그를 지정하십시오. 당신은 이미 물어볼 때 이것을 상기시켜주는 [pop up] (http://meta.stackoverflow.com/a/274634/73226)을보아야 만합니다. –

답변

1

행 4의 대량 삽입에는 NULL 값이 포함되어 있지만 SQL Server는이를 'NULL'을 포함하는 문자열로 해석합니다. 또한 행 7에서 동일한 문제, 돈 유형을 예상하여 열 Quota있을 것이다

106|Sam Clark|52|11|VP Sales|06/14/88||275000.00|299912.00 

하지만 NULL을 포함하는 문자열이 제공됩니다 : 당신은 그와 함께 4 행을 변경하려고 할 수 있습니다.

+0

이 자습서를 사용하여 CSV 파일을 생성했으며 기본적으로 SQL은 빈 문자열 대신 "NULL"을 작성합니다. select 문에서 ISNULL (CONVERT (VARCHAR, columnName), '') 스팸을 사용하지 않고 수동으로 출력 CSV 파일을 변경하는 것보다 나은 솔루션이 있어야합니다. http://www.sqlservercentral.com/blogs/waterox -sql/2014/08/19/export-a-ssms-query-result-set-to-csv / – Elaskanator