SQL BULK INSERT FROM错误

时间:2010-11-09 14:14:52

标签: sql bulkinsert

我正在尝试将CS​​V文件插入Microsoft SQL Server Management Studio数据库,如下所示:

    BULK INSERT [dbo].[STUDY]
        FROM 'C:\Documents and Settings\Adam\My Documents\SQL Server Management Studio\Projects\StudyTable.csv' 
    WITH 
    ( 
        MAXERRORS = 0,
        FIELDTERMINATOR = ',',
        ROWTERMINATOR = '\n'
    )

但我收到错误:

    Msg 4863, Level 16, State 1, Line 2
    Bulk load data conversion error (truncation) for row 1, column 9 (STATUS).

    Msg 7399, Level 16, State 1, Line 2
    The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.

    Msg 7330, Level 16, State 2, Line 2
    Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".

很遗憾,我无法提供StudyTable.csv的内容,以保护我们正在为之工作的公司的隐私。

编辑我可以保证csv文件的有效性。它是从OpenOffice的Excel版本导出的,我经历了并确保它有效。

EDIT2 这是CSV文件的虚拟版本:

    1234,,,1234,1234,,"asdf","asdf","Z","asd",7/1/2010 12:23,8/5/2010 13:36,9/4/2010 13:36,"(asdf,1661,#1234,F,T)","F",,,"F",,"68866",1234,1234,1234,"F"

这是STUDY表的创建脚本:

CREATE TABLE [dbo].[STUDY]
(
    [STUDY_ID] INT IDENTITY(1,1) NOT NULL,
    [PARENT_ID] INT,
    [GROUP_ID] INT,
    [WORKFLOW_NODE_ID] INT,
    [STUDY_TEMPLATE_ID] INT,
    [INSPECTION_PLAN_ID] INT,
    [NAME] VARCHAR(255),
    [DESCRIPTION] VARCHAR(4000),
    [STATUS] VARCHAR,
    [OLD_STATUS] VARCHAR,
    [CREATED_ON] DATE,
    [COMPLETED_ON] DATE,
    [AUTHORIZED_ON] DATE,
    [EVENTS] VARCHAR,
    [NEEDS_REVIEW] CHAR,
    [HAS_NOTES] CHAR,
    [HAS_AUDITS] CHAR,
    [STUDY_PART] CHAR,
    [STUDY_TYPE] VARCHAR,
    [EXTERNAL_REFERENCE] VARCHAR,
    [CREATED_BY] INT,
    [COMPLETED_BY] INT,
    [AUTHORISED_BY] INT,
    [ARCHIVED_CHILD_COMPLETE] CHAR
)

2 个答案:

答案 0 :(得分:1)

听起来.csv文件中STATUS列中的数据比SQL表中字段的定义长。

检查该字段的定义,确保.csv中的数据适合(长度和类型)。

答案 1 :(得分:0)

第一个错误可能是因为列太大而无法容纳数据库。首先想到的是CSV文件是否包含列标题?

第二个错误很通用。

您的任何字段是否都包含逗号作为其数据的一部分 - 例如 37,High Street 未包含在引号中?由于数据中存在“问题”(数据有效,不完全符合预期),我过去曾多次失败。如果您的CSV文件是几千行或更多 - 如果您尝试仅导入前一百(或十)行会发生什么?