我正在尝试将文件中的数据加载到SQL Server表中。我使用以下bcp
命令:
bcp [dbo].[DSUpstreamFileDetails] in "c:\BackLogTable.dat"
-c -t0x1C -S abc.database.secure.windows.net -d abc-U asd-P sda
但是出现以下错误
SQLState = 22001,NativeError = 0错误= [Microsoft] [用于SQL Server的ODBC驱动程序13]字符串数据,右截断
SQLState = 22001,NativeError = 0错误= [Microsoft] [用于SQL Server的ODBC驱动程序13]字符串数据,右截断
SQLState = 22001,NativeError = 0错误= [Microsoft] [用于SQL Server的ODBC驱动程序13]字符串数据,右截断
SQLState = 22001,NativeError = 0错误= [Microsoft] [用于SQL Server的ODBC驱动程序13]字符串数据,右截断
SQLState = S1000,NativeError = 0错误= [Microsoft] [SQL Server ODBC驱动程序13] BCP数据文件中遇到意外的EOF
这是输入文件中的数据
ICE_DATASRCNG_TRANS_ONPREM_INBOUND_LOADING#GCW#hp#SHIPMENT#AMS#TRANSACTION#DAILY#E:\ICE_Data\DataProviders\GCW\HPINDIRECT\SHIPMENT#/Dataproviders/Landing/GCW/HPIndirect/Shipment/AMS#gcw_hp_indirect_shipment_ams_658_20200303_04_38_08.dat##Backlog#2020-03-06 10:37:36#2020-03-06 10:37:43#1
ICE_DATASRCNG_TRANS_ONPREM_INBOUND_LOADING#EDW#ord#ORDER#ALL#TRANSACTION#DAILY#E:\ICE_Data\EDW#/DataProviders/Landing/KAI/Order#edw_ord_extr_3x_SIQP_20200306.035105.dat##Backlog#2020-03-06 10:37:50#2020-03-06 10:38:01#1
ICE_DATASRCNG_TRANS_ONPREM_INBOUND_LOADING#EDW#ship#SHIPMENT#ALL#TRANSACTION#DAILY#E:\ICE_Data\EDW#/DataProviders/Landing/KAI/Ship#edw_ship_extr_3x_SIQP_20200306.035052.dat##Backlog#2020-03-06 10:38:09#2020-03-06 10:38:18#1
ICE_DATASRCNG_TRANS_ONPREM_INBOUND_LOADING#GRS#REBATES#REBATES#AMS#TRANSACTION#WEEKLY#E:\ICE_Data\GRS_ORION#/DataProviders/Landing/Rebates/AMS#GRS_ICE_AMS_20200302.100847.dat##Backlog#2020-03-06 10:38:24#2020-03-06 10:38:26#1
ICE_DATASRCNG_TRANS_ONPREM_INBOUND_LOADING#GRS#REBATES#REBATES#APJ#TRANSACTION#WEEKLY#E:\ICE_Data\GRS_ORION#/DataProviders/Landing/Rebates/APJ#GRS_ICE_APJ_20200302.100647.dat##Backlog#2020-03-06 10:38:30#2020-03-06 10:38:33#1
ICE_DATASRCNG_TRANS_ONPREM_INBOUND_LOADING#ORION#REBATES#REBATES#AMS#TRANSACTION#WEEKLY#E:\ICE_Data\GRS_ORION#/DataProviders/Landing/Rebates/AMS#Orion_ICE_AMS_20200302.100208.dat##Backlog#2020-03-06 10:38:38#2020-03-06 10:38:46#1
ICE_DATASRCNG_TRANS_ONPREM_INBOUND_LOADING#FCM#REBATES#REBATES#AMS#TRANSACTION#WEEKLY#E:\ICE_Data\Zyme#/DataProviders/Landing/Rebates/AMS#FCM_Columbus_AMS_20200302.213013.dat##Backlog#2020-03-06 10:38:50#2020-03-06 10:39:00#1
ICE_DATASRCNG_TRANS_ONPREM_INBOUND_LOADING#FCM#REBATES#REBATES#APJ#TRANSACTION#WEEKLY#E:\ICE_Data\Zyme#/DataProviders/Landing/Rebates/APJ#FCM_Columbus_APJ_20200302.213013.dat##Backlog#2020-03-06 10:39:05#2020-03-06 10:39:06#1
ICE_DATASRCNG_TRANS_ONPREM_INBOUND_LOADING#FCM#REBATES#REBATES#EMEA#TRANSACTION#WEEKLY#E:\ICE_Data\Zyme#/DataProviders/Landing/Rebates/EMEA#FCM_Columbus_EMEA_20200302.213013.dat##Backlog#2020-03-06 10:39:11#2020-03-06 10:39:18#1
字段分隔符为(\ 034)或0x1C。为了便于阅读,在上面的数据中,我用#替换了字段分隔符。
表中已经有一些行。
因此,我做了一点检查,是否可以将表中的现有数据导入本地文件,截断表中的数据,然后从本地文件中重新加载数据。成功了。
加载到本地文件中
bcp [dbo].[DSUpstreamFileDetails] out "c:\BackLog.dat" -c -t0x1C -S abc.database.secure.windows.net -d abc-U abc -P abc
将数据加载到表中
bcp [dbo].[DSUpstreamFileDetails] in "c:\BackLogTable.dat" -c -t0x1C -S abc.database.secure.windows.net -d abc-U abc-P abc
如何解决我正在使用的自定义文件的正确截断的问题?
我用过-n
,-N
和-c
开关,但徒劳。
输入文件中的行终止符为CRLF('\ r \ n')。