在BULK INSERT期间使用默认约束,其中发生数据转换错误

时间:2016-09-23 21:53:14

标签: sql-server tsql

我正在尝试使用BULK INSERT插入第三方报告。其中一列使用TIME数据类型具有呼叫持续时间,但是如果由于某种原因他们没有呼叫时间,则他们将报告标记为N / A,这会在BULK INSERT期间导致错误: FIRAnalytics.logEventWithName("Ratings", parameters: [ "rating": (indexPath.row + 1) ])

问题Msg 4864, Level 16, State 1, Line 20 Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 9, column 11 (call_duration).中的列的默认约束为'00:00:00'我希望系统在该列(或任何列)中的BULK INSERT期间标记错误时使用对于这个问题,使用默认约束)

更新:这是我的BULK INSERT声明:

call_duration

我希望在数据出现问题时使用BULK INSERT dbo.TempYellowPages FROM 'Z:\YP.txt' WITH ( FIRSTROW=2, FIELDTERMINATOR='\t', ROWTERMINATOR='\n', MAXERRORS = 99 ) 表中列的默认约束。我不能使用CONVERT(据我所知),因为数据不在源表中,它直接来自文件。以下是该文件可能具有的一些字段的示例:

TempYellowPages

1 个答案:

答案 0 :(得分:0)

在源查询中将“call_duration”列转换为varchar,使用CONVERT函数。请注意SQL Server如何理解'00:00:00'(可能是1900-01-01')并根据'1900 ..'值将报告条件更改为显示'N / A'