SQL Server : 계산 열이있는 테이블에 대량 삽입

calculated-columns sql sqlbulkcopy sql-server

문제

텍스트 파일의 데이터를 bcp가있는 계산 열이있는 SQL Server 2016 테이블에 삽입하려고합니다.

내 bcp 명령 :

bcp Test.dbo.myFirstImport IN D:\myFirstImport.txt -f D:\myFirstImport.xml –T

내 테이블 :

CREATE TABLE [dbo].[MyFirstImport](
       [PersonID] [smallint] NULL,
       [FirstName] [varchar](25) NULL,
       [LastName] [varchar](30) NULL,
       [BirthDate] [date] NOT NULL,
       [YearMonthCom]  AS (datepart(year,[BirthDate])*(100)+datepart(month,[BirthDate])) PERSISTED
) ON [PRIMARY]

내 데이터 (탭 구분) :

1   Anthony   Grosse      1980-02-23
2   Alica     Fatnowna    1963-11-14
3   Stella    Rosenhain   1992-03-02

내 형식 파일 :

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="25" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="11"/>
  <!--
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="11"/>
  <FIELD ID="5" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="12"/>
  -->
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="FirstName" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="3" NAME="LastName" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="4" NAME="BirthDate" xsi:type="SQLDATE"/>
  <!--
  <COLUMN SOURCE="5" NAME="YearMonthCom" xsi:type="SQLINT"/>
  -->
 </ROW>
</BCPFORMAT>

내 오류

SQLState = 37000, NativeError = 1934 오류 = [Microsoft] [SQL Server 용 ODBC 드라이버 11] [SQL 서버] "INSERT, INSERT, 집계 중 선택하십시오."옵션을 : "QUOTED_IDENTIFIER"옵션에 추가하십시오. 현재 주가에 대한 사용자 옵션은 사용자 정의 할 수 있습니다. 대상을 선택하면 표시 형식 또는 데이터 형식은 선택 사항입니다. 전체 레코드와 현재의 실행 코드가 일치하면 표시되지 않습니다. 모든 데이터 형식은 표시 형식을 포함하고 있으며 그 밖의 데이터 형식은 표시 할 수 없습니다. . 실패한 BCP 복사본

그리고 영어로

다음 SET 옵션의 설정이 잘못되어 INSERT에 실패했습니다 : "QUOTED_IDENTIFIER" SET 옵션이 계산 된 열 및 / 또는 필터링 된 인덱스 및 / 또는 쿼리 알림 및 / 또는 XML 데이터 형식 메서드 및 / 또는 공간 인덱스 작업에서 인덱싱 된 뷰 및 / 또는 인덱스와 함께 사용되는지 확인합니다.

인기 답변

계산 된 열이없는 다른 테이블을 만들고 bcp가 작동했습니다. 계산 된 열의 문제인지 확인하기 위해 노력했습니다. QUOTED_IDENTIFIER를 ON으로 설정 한 표 (계산 열 포함)를 다시 만들었습니다. Jacob의 의견을 참조하십시오. 여전히 작동하지 않았습니다. 하지만 -q와 함께 bcp를 시작했을 때 제대로 작동했습니다. 고마워요, 제이콥!



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.