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

时间:2017-11-09 06:14:58

标签: sql csv insert ignore bulk

请记住我是学生,所以我无法修改csv文件。它也必须编码,不允许“特殊工具”。我在SQL中有这些语句:

架构和表格创建:

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
  第2行第1列(CONT_GUID)的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

     

Msg 4864,Level 16,State 1,Line 3
  第3行第1行(CONT_GUID)的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

     

....依此类推,对于csv文件中的每一行

我的csv文件中有4列,但我的表中有5列。如何忽略表格中的第一个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文件。没有空格的逗号用作分隔符。

2 个答案:

答案 0 :(得分:0)

您不能忽略批量插入中的字段,建议加载所有字段并删除或删除您不想要的列中的值或将所有字段加载到临时表中,在登台表中进行更改并加载进入决赛桌(目标)

答案 1 :(得分:0)

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

我不知道您上面的唯一标识语法,但是您已经指定了newid(),所以以下内容应该是完整的答案

SUM([b(i) * (i-1)**2, i = 1, SIZE(b)])