首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大容量负载数据转换误差

大容量负载数据转换误差
EN

Stack Overflow用户
提问于 2016-02-14 13:41:50
回答 3查看 193关注 0票数 0

我正在尝试将数据从csv加载到SQL表中。

我的DDL:

代码语言:javascript
复制
  CREATE TABLE pcm.dbo.partitiondocumentcount 
    ( 
       partitionkey  NVARCHAR(30) NOT NULL, 
       documentcount INT NOT NULL, 
       datetime      DATETIME2(3) DEFAULT CURRENT_TIMESTAMP, 
       CONSTRAINT pk_partitiondocumentcount PRIMARY KEY (partitionkey ASC) 
    ) 

  CREATE NONCLUSTERED INDEX partitionkey_index 
    ON pcm.dbo.partitiondocumentcount (partitionkey AS

我的文件(我也尝试过没有引号,也没有起作用):

代码语言:javascript
复制
"partition-1",1
"partition-2",1

我的问题是:

代码语言:javascript
复制
BULK INSERT partitionDocumentCount
FROM 'C:\files\pcmInitialConfiguration\partitionCount.csv'
WITH(
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
)
GO
SELECT * FROM partitionDocumentCount

我从DBVisualizer获得了错误:

代码语言:javascript
复制
 15:36:26  [BULK - 0 row(s), 0.008 secs]  [Error Code: 4864, SQL State: S0001]  Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 2 (documentcount).
 15:36:26  [SELECT - 0 row(s), 0.004 secs]  Empty result set fetched
... 2 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.012/0.000 sec  [0 successful, 1 warnings, 1 errors]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-14 13:47:23

解决方案是简单地添加一列。我想,因为我的表有三列,所以它希望文件中有三列。

我的文件(我也试过没有引号,也不起作用):这是一个有用的文件

代码语言:javascript
复制
partition-1,1,
partition-2,1,
票数 0
EN

Stack Overflow用户

发布于 2016-02-14 13:47:24

我在您的方法中看到了一个问题,但我不确定它是否会产生错误。表有三列,但数据只有两列。即使有default约束,bulk insert仍然查找第三列。它可能会得到这个错误,因为它正在寻找逗号,但遇到了行尾。

解决这个问题的方法是使用一个视图:

代码语言:javascript
复制
create view pcm.dbo.partitiondocumentcount_2 as
    select partitionkey, documentcount
    from pcm.dbo.partitiondocumentcount;

然后:

代码语言:javascript
复制
BULK INSERT partitionDocumentCount_2
FROM 'C:\files\pcmInitialConfiguration\partitionCount.csv'
WITH (FIELDTERMINATOR = ',',
      ROWTERMINATOR = '\n'
     );
票数 1
EN

Stack Overflow用户

发布于 2016-02-14 13:47:13

有关批量插入选项,请参见:https://msdn.microsoft.com/en-AU/library/ms188365.aspx

CODEPAGE ={ 'ACP‘\OEM’\>指定数据文件中数据的代码页。只有当数据包含字符值大于127或小于32的char、varchar或文本列时,CODEPAGE才是相关的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35392466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档