SQL Server BULK INSERT错误

时间:2013-02-26 17:13:13

标签: sql sql-server bulkinsert

这是CSV格式的源数据:

4,23,2AY5623,7235623
4,23,2GP1207,1451207
4,23,2GQ6689,4186689

表:

CREATE TABLE [dbo].[Table1](
    [idCodeLevel] [int] NOT NULL,
    [idFirm] [int] NOT NULL,
    [valCodeFrom] [varchar](15) NOT NULL,
    [valCodeTo] [varchar](15) NOT NULL
) ON [PRIMARY]

这是我用来批量导入的代码:

USE Test
GO

TRUNCATE TABLE Table1
GO

BULK INSERT Table1
  FROM 'C:\Temp\test.csv'
  WITH (
    FIELDTERMINATOR = ',',
    MAXERRORS=0,
    ROWTERMINATOR = '\n'
  )
GO

我得到的错误是:

  

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

有人能告诉我为什么会失败吗?

我用谷歌搜索并发现我可能必须使用格式.fmt。但是如何将csv文件转换为fmt。我见过从sql表创建fmt文件的代码。

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

csv在字段名称的顶部有一行吗?如果是这样,您需要在批量声明中添加“FIRSTROW = 2”。如果没有,请尝试创建一个包含所有VARCHAR字段的新表,然后检查数据:您可能在数据中有一些您不期望的奇怪内容,例如非打印字符。导入为文本,然后尝试“从NEWTABLE中选择ISNUMERIC([FIELD1])”。

答案 1 :(得分:0)

使用sql导入向导从外部文件导入数据。

右键点击数据库--->任务--->导入---->将平面文件指定为源并选择目标服务器。

有关详细信息,请访问Import CSV data to SQL