대량 삽입을 사용하여 텍스트 파일에서 SQL Server에 테이블을 만들려고하는데 대량로드 데이터 변환 오류 (잘림)가 계속 발생합니다. 내가 뭘 잘못하고 있니? 상단 부분은 데이터가 텍스트에있는 방식이고 아래는 코드입니다.
'01','INPATIENT FACILITY','010','ACUTE CARE HOSPITAL'
'01','INPATIENT FACILITY','011','PRIVATE PSYCHIATRIC HOSPITAL'
'01','INPATIENT FACILITY','012','INPATIENT MEDICAL REHAB HOSPITAL'
CREATE TABLE [dbo].[PROVIDER_TYPE]
(
[PROVIDER_TYPE_ID] [VARCHAR](2) NULL,
[PROVIDER_TYPE] [VARCHAR](50) NULL,
[PROVIDER_SPECIALITY_ID] [VARCHAR](3) NULL,
[PROVIDER_SPECIALITY] [VARCHAR](50) NULL
) ON [PRIMARY]
BULK INSERT DBO.PROVIDER_TYPE FROM 'C:\SQL\t2.txt'
WITH (
datafiletype = 'char'
,fieldterminator = ','
,ROWTERMINATOR = '\n'
)
첫 번째 값은 2자가 아니라 4입니다. 값은 '01'
; 의가 있음을 포괄적으로 작은 따옴표의 ( '
). 이것이 '01'
( '''01'''
T-SQL에서 문자열을 표현하려는 경우)가 varchar(2)
.
SQL Server 2017+를 사용하는 경우 FORMAT
및 FIELDQUOTE
옵션을 사용할 수 있습니다. 파일을 만들 때 둘 다 사용했듯이 \r\n
for 를 사용 ROWTERMINATOR
합니다. 파일에 줄 바꿈 만 포함되어 있고 캐리지 리턴이없는 경우 다음을 사용하십시오 \n
.
BULK INSERT dbo.PROVIDER_TYPE FROM '/mnt/WDBlue/t2.txt' --This was my test file
WITH (DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\r\n',
FORMAT = 'CSV',
FIELDQUOTE = '''');
SQL Server 2017+를 사용하지 않는 경우 단순히 인용 된 필드를 지원하지 않으므로 다른 도구를 사용하는 것이 좋습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다