在 SQL Server Management Studio 中,如何在从 csv 文件批量插入时忽略 table 中的第一列?

In SQL Server Management Studio, how do I ignore the first column in a table when bulk inserting from a csv fle?

请记住我是学生,所以我不能修改csv文件。它也必须编码并且不允许 "special tools"。我在 SQL:

中有这些陈述

架构和table创建:

CREATE SCHEMA IA;
GO

CREATE TABLE IA.CONTACTS
(
    CONT_GUID UNIQUEIDENTIFIER PRIMARY KEY NOT NULL,
    CONT_FNAME VARCHAR(100) NOT NULL,
    CONT_LNAME VARCHAR(100) NOT NULL,
    CONT_DOB DATE,
    CONT_CALLS INTEGER
);

尝试从 csv 文件批量插入:

BULK INSERT IA.IA.Contacts   
FROM 'C:\Users\k20\Desktop/IA.CONTACTS.csv'  
WITH   
   (FIRSTROW = 2,
    KEEPIDENTITY,
    FIELDTERMINATOR = ',',  
    ROWTERMINATOR = '\n');

我收到这个错误:

Msg 4864, Level 16, State 1, Line 3
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 1 (CONT_GUID).

Msg 4864, Level 16, State 1, Line 3
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 3, column 1 (CONT_GUID).

.... and so on, for every row in the csv file

我的 csv 文件中有 4 列,但 table 中有 5 列。如何忽略 table、CONT_GUID 中的第一个?

编辑:

CONT_FNAME  CONT_LNAME  CONT_DOB    CONT_CALLS
Mary    May 1/25/1980   2
John    James   1/13/1978   3
Martin  Merriweather    4/25/1988   1
James   Johns   6/13/1990   1
Jerry   Jacobs  11/11/1996  1
Madelyn Mace    3/30/1995   2
Bruce   Blake   1/30/1970   4
Brian   Brown   12/4/1980   2
Charlie Childress   2/13/1987   3
Ray Rhodes  12/23/1989  1
William Willis  11/13/1985  1
Herman  Hughes  3/1/1980    2
Steve   Stevens 5/12/1984   2
Daryl   Dixon   9/25/1983   3
Abe Avery   8/24/1987   5
Kevin   Carlyle 10/15/1975  3
Sean    Shaffer 10/25/1977  3
Peter   Piper   8/6/1974    3
Oscar   Oosker  7/2/1973    2
Tom Townsend    6/6/1965    1
Victor  Vaughn  6/13/1966   1
Nick    Nice    7/12/1968   1
Sally   Soose   6/12/1984   1
June    Johnson 12/16/1984  1

它直接来自 csv 文件。不带空格的逗号用作分隔符。

您不能忽略批量插入中的字段,建议加载所有字段并删除或删除您不需要的列中的值,或者将所有字段加载到暂存中 table,进行更改在暂存 table 并将其加载到最终 table(Target)

将它们加载到具有 4 列的暂存 table 中,然后创建一个 sql 以将它们插入到最终的 table 中,指定要插入的 4 列。

我不知道你上面的唯一标识语法,但你指定了 newid() 有效,所以下面应该是完整的答案

CREATE TABLE IA.CONTACTS
(
CONT_GUID UNIQUEIDENTIFIER  NOT NULL,
CONT_FNAME VARCHAR(100) NOT NULL,
CONT_LNAME VARCHAR(100) NOT NULL,
CONT_DOB DATE,
CONT_CALLS INTEGER
)

BULK INSERT 
IA.IA.Staging_Contacts  
   FROM 'C:\Users\k20\Desktop/IA.CONTACTS.csv'  
   WITH   
      (  
        FIRSTROW=2,
        KEEPIDENTITY,
         FIELDTERMINATOR =',',  
         ROWTERMINATOR ='\n'  
      );

insert into contacts (CONT_GUID,CONT_FNAME ,CONT_LNAME,CONT_DOB,CONT_CALLS )
select newid(),CONT_FNAME ,CONT_LNAME,CONT_DOB,CONT_CALLS 
from staging_contacts