SQL Server:尝试将“smallmoney”数据加载到表中时发生转换错误

时间:2018-02-25 11:49:32

标签: sql-server error-handling

我正在尝试将CS​​V文件加载到表中以对数据进行排序。但是,smallmoneyBillingRate(例如$ 203.75)将无法转换,SQL Server会生成以下消息:

  

第2行第4列(BillingRate)的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。
  Msg 4864,Level 16,State 1,Line 10

以下是我正在使用的代码:

 --CREATE TABLE SubData2
 --(
 --RecordID int,
 --SubscriberID int,
 --BillingMonth int,
 --BillingRate smallmoney,
 --Region varchar(255)
 --);

 BULK INSERT Subdata2
 FROM 'C:\Folder\1-caseint.csv'
 WITH 
      (FIRSTROW = 2,
       FIELDTERMINATOR = '|',  --CSV field delimiter
       ROWTERMINATOR = '\n', --Use to shift the control to next row
       ERRORFILE = 'C:\Folder\CaseErrorRows4.csv',
       TABLOCK);

CSV文件中的典型代码行如下所示:

1|0000000001|1|$233.94|"West"

如果这里有任何明显的错误,请道歉 - 我是SQL Server的新手:)

非常感谢, 汤姆。

1 个答案:

答案 0 :(得分:0)

这很奇怪。在直接插入时,只有最后一个失败。

declare @t table (sm smallmoney);
insert into @t 
values ('$256.6')
insert into @t 
values (244.8);
insert into @t 
values ('12.8');
insert into @t 
values ('$256.5'), ('244.7');
insert into @t 
values ($256.5); 
insert into @t 
values ('$256.5'), (244.7), ('12.12');
select * from @t;

尝试从数据中删除$。