2013-05-13 3 views
3

테이블로 가져 오려는 쉼표로 구분 된 데이터의 1600 개의 행과 82 개의 열을 포함하는 txt 파일이 있습니다. 마지막 필드의 모든 행에 다음 오류가 표시됩니다.SQL Server 2005 - 일괄 삽입 실패

메시지 4864, 수준 16, 상태 1, 줄 1 행 1에 대한 대량로드 데이터 변환 오류 (형식이 일치하지 않거나 잘못된 코드 페이지 유형) 칼럼 81 (DB252D20C8).

USE [ENERGY] 
GO 
/****** Object: Table [dbo].[READINGS1] Script Date: 05/13/2013 20:00:30 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE [dbo].[READINGS1](
[DateAndTime] [datetime] NOT NULL, 
[DB240D4C7] [float] NULL, 
[DB240D8C7] [float] NULL, 
[DB240D12C7] [float] NULL, 
[DB240D16C7] [float] NULL, 



[DB252D12C8] [float] NULL, 
[DB252D16C8] [float] NULL, 
[DB252D20C8] [float] NULL, 
CONSTRAINT [READINGS1DataTimeStamp] PRIMARY KEY CLUSTERED 
(
[DateAndTime] ASC 
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

텍스트 파일은 다음과 같다 :

2013-02-19 00:00:00.000,6,945,1886,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,2040,6299,0,0,6,567,1248,0,0,251,8859,8655,0,0,10,316,1786,0,0,7,180,1206,0,0,1,16,56,0,0,368,18953,36949,0,0,NULL,NULL 
2013-02-19 01:00:00.000,6,147,1886,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,1516,6299,0,0,3,115,1248,0,0,250,5077,8655,0,0,9,219,1786,0,0,5,147,1206,0,0,1,15,56,0,0,362,8907,36949,0,0,NULL,NULL 
+1

BULK INSERT가 Null 값을 "NULL"로 받아 들일 것이라고 생각하지 않습니다. 파일에서 NULL을 NULL로 대체하십시오. – EricZ

+0

안녕하세요, 시도했지만 운이 없었습니다. – user2119912

답변

1

가져 오기 문은

BULK 
INSERT [ENERGY].[dbo].[READINGS1] 
     from 'c:\readings2.txt' 
with 
(
DATAFILETYPE='widechar', 
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
) 
GO 

테이블 구조는 다음과 같다 스크립트의 상단과 하단입니다

좋아요. 그래야 할 일은 성명서를 바꿔서 파일 끝에는 KEEPNULLS. 이것은 SQL 서버에 널 값을 유지할 것을 알립니다. 현재는 문자열로 NULLFLOAT COLUMN으로 변환하려고합니다. 이같이 보이도록 성전을 바꿔라.

BULK 
INSERT [ENERGY].[dbo].[READINGS1] 
     from 'c:\readings2.txt' 
with 
(
DATAFILETYPE='widechar', 
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n', 
KEEPNULLS 
) 
GO 

BOL에 대한 기사가 있습니다. .

그렇지 않으면이 문제를 처리하기 위해 항상 Integration Services 패키지를 빌드 할 수 있습니다. 플랫 파일 소스에서 정보를 가져 오는 쉬운 방법입니다.

+0

아이디어를 주셔서 감사합니다. 나는 모든 NULL 값을 0으로 대체하고 여전히 같은 문제를 가지고 있습니다. – user2119912

+0

그런 다음 빠른 SSIS 패키지를 작성하여이 문제를 처리하십시오. 가져 오기 전에 플랫 파일의 데이터 유형을 쉽게 설정할 수 있습니다. – Zane

0

테이블의 입력 텍스트 파일에 너무 많은 필드가있는 것으로 나타났습니다.