我正在尝试将CSV文件插入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
)
答案 0 :(得分:1)
听起来.csv文件中STATUS
列中的数据比SQL表中字段的定义长。
检查该字段的定义,确保.csv中的数据适合(长度和类型)。
答案 1 :(得分:0)
第一个错误可能是因为列太大而无法容纳数据库。首先想到的是CSV文件是否包含列标题?
第二个错误很通用。
您的任何字段是否都包含逗号作为其数据的一部分 - 例如 37,High Street 未包含在引号中?由于数据中存在“问题”(数据有效,不完全符合预期),我过去曾多次失败。如果您的CSV文件是几千行或更多 - 如果您尝试仅导入前一百(或十)行会发生什么?