1

这是我的 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

我得到的错误是:

消息 4864,级别 16,状态 1,第 2
行第 1 行第 1 列 (idCodeLevel) 的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

你能请有人告诉我为什么它失败了吗?

我搜索了一下,发现我可能必须使用 .fmt 格式。但是如何将 csv 文件转换为 fmt. 我已经看到了从 sql 表创建 fmt 文件的代码。

非常感谢你的帮助!

4

2 回答 2

1

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

于 2013-02-26T17:39:28.653 回答
0

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

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

有关更多信息,请访问将 CSV 数据导入 SQL

于 2013-02-26T18:10:37.360 回答