回答

收藏

无法确定大量插入错误的原因

技术问答 技术问答 296 人阅读 | 0 人回复 | 2023-09-12

我在试着操作这个查询(我也试过没有指定)FIELDTERMINATOR和ROWTERMINATOR情况)。它使用我事先手动创建的数据文件(没有bcp输出)。
0 C: j. v/ u0 \2 j* k  JBULK INSERT FS.dbo.Termination_Call_DetailFROM 'C:\Termination_Call_Detail__1317841711.dat'WITH( FORMATFILE = 'C:\Termination_Call_Detail__update_TerminationCallDetailData.fmt',FIELDTERMINATOR = '\t',ROWTERMINATOR = '\r\n')我犯的错误:* h7 n9 \  R: m* X5 y3 y6 o
服务器信息号= 4864严重性= 16状态= 1行= 1服务器= USA109MSSQL1A
8 L; O' q7 m" i. G    文本=第1行第9列(RouterCallKey)批量加载数据转换错误(类型不匹配或指定代码页的字符无效)。
3 X' Y- A8 i* k& f# I5 F服务器信息号= 4832严重性= 16状态= 1行= 1服务器= USA109MSSQL1A
7 M7 F, L; @& t- i5 i* J: V9 S    文本=批量加载:在数据文件中遇到文件意外结束。
) W; ^7 o3 G; q% [' J9 I8 t; S服务器信息号= 7399严重性= 16状态=行= 1服务器= USA109MSSQL1A
: n* l& `6 O3 |- i2 a% }1 P# a    文本=链接服务器链接服务器(null)”的OLE DB接口 BULK报告了一个错误。7 B) i. g+ p% V# l: m
    提供提供任何关于错误的信息。$ u3 b& G/ p7 x5 f" E0 I, [; P
服务器信息号= 7330严重性= 16状态= 2行=服务器= USA109MSSQL1A
( R  R( R! ~; T- n    文本=无法从OLE DB接口 BULK获取链接服务器(空)行。4 B4 E8 U, F2 [! R3 u5 u& v. ?: Y( a
我试着只和一行一起工作。2 k( z5 w1 U4 Q
ASCII数据文件:
& w5 L" i( A2 ]2 ]+ d% C6165827664                        5027  5001 5001  5005 5005 5010 5010    201110                                                                                   50275027502775027502750275027550275027                                                    50275027502750275027505050505015555555555555555000155                                                                                                                                                                                                                                                                                                      -10-505 14:53:44     1317840824      240    20111110111-10-54:54:04     131784840844444      150026 211                 4480   21543  283   288             29                                                                                          IPT_Call        TAC_Rollover                                                       5555555555555555555555555555555555455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555N            503000 5000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                N                                                                                                                             N       0               0数据文件转储数据文件:http :
5 n: m* F( m  D6 w$ b//pastebin.com/grnwQrdT
3 r" g+ o4 x! n$ v格式文件:http :
' E7 H4 Y/ u0 R) ]( |//pastebin.com/WwSQvCGg
" v0 y# @) E3 V: k9 q表架构:http :
7 ?* A! V0 n6 ]4 S! \" y# C0 `//pastebin.com/gFjp4xYy  M9 w1 i) R7 C! E
插入使用66列;该表包含84列。如果使用整个表bcp与同一行的数据文件创建格式文件可以毫无问题地运行BULK INSERT QUERY。4 V3 j$ @; E6 D+ F- y' j. `
由bcp在同一行数据(包括所有列)上创建的数据文件的16进制转储:http :
; I9 f# d  d2 D5 d1 S//pastebin.com/MpMk6iq4- z* z$ I# G0 G
我仔细寻找任何缺少的换行符或制表符分隔符,但我找不到任何。您可以在数据文件的16进制转储中看到所有看似正确分隔的东西。我会把它和bcp比较创建的数据文件,找不到格式差异。; }- A* f2 g  A- }$ i% p  @
我无法想象为什么它抱怨那个特定的字段(RouterCallKey)-其他字段在格式文件中有相同的类型(例如RouterCallKeyDay)。
! V- _/ s8 X. q3 L# [谢谢!
+ w; J" `& \; l- }$ w6 c* v                                                               
9 ^+ L" R% a, }! p& U+ Z    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则