【发布时间】:2017-03-04 03:06:53
【问题描述】:
我不是棚子里最锋利的工具,所以请多多包涵。我正在尝试将 csv 文件导入 Microsoft SQL Server 2016。但是,每当我尝试这样做时,都会遇到错误。我认为这可能与管道字符有关。我从中获取文件的网站有这样的说法:
文本字段由竖线字符 (ascii 124) 包围。日期和数字字段不是。逗号分隔所有字段。
这是我的查询的样子:
CREATE TABLE cands16 (
[Cycle] [char](4) NOT NULL,
[FECCandID] [char] (9) NOT NULL,
[CID] [char] (9) NULL,
[FirstLastP] [varchar] (50) NULL,
[Party] [char] (1) NULL,
[DistIDRunFor] [char] (4) NULL,
[DistIDCurr] [char] (4) NULL,
[CurrCand] [char] (1) NULL,
[CRPICO] [char] (1) NULL,
[RecipCode] [char] (2) NULL,
[NoPacs] [char] (1) NULL
) ON [PRIMARY]
BULK
INSERT cands16
FROM 'C:\aaa open secrets\CampaignFin16\Cands16.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
这是我的错误:
Msg 4863, Level 16, State 1, Line 19
Bulk load data conversion error (truncation) for row 1, column 1 (Cycle).
Msg 4863, Level 16, State 1, Line 19
Bulk load data conversion error (truncation) for row 2, column 1 (Cycle).
Msg 4863, Level 16, State 1, Line 19
Bulk load data conversion error (truncation) for row 3, column 1 (Cycle).
Msg 4863, Level 16, State 1, Line 19
Bulk load data conversion error (truncation) for row 4, column 1 (Cycle).
Msg 4863, Level 16, State 1, Line 19
Bulk load data conversion error (truncation) for row 5, column 1 (Cycle).
Msg 4863, Level 16, State 1, Line 19
Bulk load data conversion error (truncation) for row 6, column 1 (Cycle).
Msg 4863, Level 16, State 1, Line 19
Bulk load data conversion error (truncation) for row 7, column 1 (Cycle).
Msg 4863, Level 16, State 1, Line 19
Bulk load data conversion error (truncation) for row 8, column 1 (Cycle).
Msg 4863, Level 16, State 1, Line 19
Bulk load data conversion error (truncation) for row 9, column 1 (Cycle).
Msg 4863, Level 16, State 1, Line 19
Bulk load data conversion error (truncation) for row 10, column 1 (Cycle).
Msg 4863, Level 16, State 1, Line 19
Bulk load data conversion error (truncation) for row 11, column 1 (Cycle).
Msg 4865, Level 16, State 1, Line 19
Cannot bulk load because the maximum number of errors (10) was exceeded.
Msg 7399, Level 16, State 1, Line 19
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 19
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".
这是我的 CSV 文件的婴儿版:
|2016|,|H4GA02060|,|N00035294|,|Greg Duke (R)|,|R|,|GA02|,| |,|Y|,|Y|,|C|,|RC|,| |
|2016|,|H4GA02078|,|N00036257|,|Vivian Childs (R)|,|R|,|GA02|,| |,| |,| |,| |,|RN|,| |
|2016|,|H4GA04116|,|N00035798|,|Thomas Brown (D)|,|D|,|GA04|,| |,| |,| |,| |,|DN|,| |
|2016|,|H4GA04124|,|N00035862|,|Thomas Wight (D)|,|D|,|GA07|,| |,| |,| |,| |,|DN|,| |
|2016|,|H4GA06087|,|N00026160|,|Tom Price (R)|,|R|,|GA06|,|GA06|,|Y|,|Y|,|I|,|RW|,| |
|2016|,|H4GA08067|,|N00026163|,|Lynn A Westmoreland (R)|,|R|,|GA03|,|GA03|,| |,|Y|,|I|,|RI|,| |
|2016|,|H4GA09065|,|N00036258|,|Bernard Fontaine (R)|,|R|,|GA09|,| |,| |,|Y|,|C|,|RL|,| |
|2016|,|H4GA10071|,|N00035370|,|Mike Collins (R)|,|R|,|GA10|,| |,| |,| |,| |,|RN|,| |
|2016|,|H4GA11046|,|N00035321|,|Susan Davis (R)|,|R|,|GA11|,| |,| |,| |,| |,|RN|,| |
【问题讨论】:
-
我也遇到过这个问题。您是否在导入过程中创建表?如果是这样,请先尝试创建表,而不是使用 create table syatement 或使用向导。确保每列的长度足以容纳内容。
-
@FredrikRudberg 我创建了表格,以便将导入的数据放入其中。我从给我内容的网站上得到了制作这张表格的说明。该网站还指定了每列需要多长时间来保存内容。你能告诉我如何使用 edit create table 语句创建表吗?我
-
报错信息告诉我列大小不够
-
@FredrikRudberg 如果这是错误的意思,那么网站可能是错误的。我会增加列容量
-
@FredrikRudberg 先生,您既是冠军又是学者。你的解决方案奏效了。看来这些愚蠢的管道算作字符。网站推荐的柱长没有考虑管道。我将不得不提出另一个问题来询问如何处理它们。请发表您的评论作为答案,以便我对其进行投票,并为您回答问题给予应有的评价。
标签: python sql-server csv truncation