복붙노트

[SQL] 대량 삽입을 사용할 때 특정 열을 무시

SQL

대량 삽입을 사용할 때 특정 열을 무시

나는 구조의 쉼표로 구분 된 텍스트 파일이

field1   field2   field3   field4
1        2        3        4

나는 텍스트 파일 삽입 일괄 다음 스크립트를 썼다, 그러나 나는 3 열을 떠나고 싶어

create table test (field1 varchar(50),field2 varchar(50),field4 varchar(50))
go
bulk insert test
from 'c:\myFilePath'
with 
(fieldterminator=',',
rowterminator='\n'
)

삽입 벌금을 열심히하지만, 삽입의 결과는 입력란 4 모습 등이 만든 필드 3가 실제로 단지 입력란 4에 연결된 그래서 FIELD3, 입력란 4. 내가 함께 일하고 있어요 플랫 파일은 여러 공연하고 쉽게 수정할 수 없습니다. 사용 대량 삽입하는 방법이 있지만,이 선언되지 않은 열은 CREATE TABLE 문을 무시했다?

해결법

  1. ==============================

    1.이 작업을 수행하는 형식의 파일을 사용할 수 있습니다 :

    이 작업을 수행하는 형식의 파일을 사용할 수 있습니다 :

    http://msdn.microsoft.com/en-gb/library/ms178129.aspx

    http://msdn.microsoft.com/en-gb/library/ms179250.aspx

    당신이 약간 cheekier 방법을 원하는 경우 또는, 그냥 모두를 가져오고 이후에 열을 놓습니다. ;)

  2. ==============================

    2.가장 쉬운 방법은 당신이 필요로 바로 열이 뷰를 만드는 것입니다.

    가장 쉬운 방법은 당신이 필요로 바로 열이 뷰를 만드는 것입니다.

    이보기에 그런 대량 삽입.

    예:

    create table people (name varchar(20) not null, dob date null, sex char(1) null)
    
    --If you are importing only name from list of names in names.txt
    
    create view vwNames as
    select name from people
    
    bulk insert 'names.txt'
    
  3. ==============================

    3.대신 그 일에, 대량 삽입을하는 동안 4 열을로드 ... 필드를 무시하고 당신이 원하는 그나마 열을 떨어 질수

    대신 그 일에, 대량 삽입을하는 동안 4 열을로드 ... 필드를 무시하고 당신이 원하는 그나마 열을 떨어 질수

    create table test (field1 varchar(50),field2 varchar(50), field3 varchar(50),field4 varchar(50))
    go
    bulk insert test
    from 'c:\myFilePath'
    with 
    (fieldterminator=',',
    rowterminator='\n'
    )
    
    ALTER TABLE test DROP column [field3]
    
  4. from https://stackoverflow.com/questions/14711814/ignore-certain-columns-when-using-bulk-insert by cc-by-sa and MIT license