Reputation: 11
BULK INSERT CDR FROM 'C:\sqldata\myDatafile.txt'
WITH (FORMATFILE='C:\sqldata\CDRimport.fmt', FIRSTROW=3)
I have a problem which cause a headache for me and appreciate your help. My problem is that I'm pulling data from flat files to SQL Server 2008 using BULK INSERT
with FORMATFILE
.
Everything is working fine and the data is being loaded successfully. However I noticed that the 1st row is always been skipped (ignored). I'm setting FIRSTROW=3
to start from the 3rd row because the 1st contains headers and the 2nd contains datatype and I don't want them to be imported.
To test my case you need the following:
First: create this table:
CREATE TABLE [dbo].[CDR](
[cdrRecordType] [varchar](50) NULL,
[globalCallID_callManagerId] [varchar](50) NULL,
[globalCallID_callId] [varchar](50) NULL,
[origLegCallIdentifier] [varchar](50) NULL,
[dateTimeOrigination] [varchar](50) NULL,
[origNodeId] [varchar](50) NULL,
[origSpan] [varchar](50) NULL,
[origIpAddr] [varchar](50) NULL,
[callingPartyNumber] [varchar](50) NULL,
[callingPartyUnicodeLoginUserID] [varchar](50) NULL,
[origCause_location] [varchar](50) NULL,
[origCause_value] [varchar](50) NULL,
[origPrecedenceLevel] [varchar](50) NULL,
[origMediaTransportAddress_IP] [varchar](50) NULL,
[origMediaTransportAddress_Port] [varchar](50) NULL,
[origMediaCap_payloadCapability] [varchar](50) NULL,
[origMediaCap_maxFramesPerPacket] [varchar](50) NULL,
[origMediaCap_g723BitRate] [varchar](50) NULL,
[origVideoCap_Codec] [varchar](50) NULL,
[origVideoCap_Bandwidth] [varchar](50) NULL,
[origVideoCap_Resolution] [varchar](50) NULL,
[origVideoTransportAddress_IP] [varchar](50) NULL,
[origVideoTransportAddress_Port] [varchar](50) NULL,
[origRSVPAudioStat] [varchar](50) NULL,
[origRSVPVideoStat] [varchar](50) NULL,
[destLegIdentifier] [varchar](50) NULL,
[destNodeId] [varchar](50) NULL,
[destSpan] [varchar](50) NULL,
[destIpAddr] [varchar](50) NULL,
[originalCalledPartyNumber] [varchar](50) NULL,
[finalCalledPartyNumber] [varchar](50) NULL,
[finalCalledPartyUnicodeLoginUserID] [varchar](50) NULL,
[destCause_location] [varchar](50) NULL,
[destCause_value] [varchar](50) NULL,
[destPrecedenceLevel] [varchar](50) NULL,
[destMediaTransportAddress_IP] [varchar](50) NULL,
[destMediaTransportAddress_Port] [varchar](50) NULL,
[destMediaCap_payloadCapability] [varchar](50) NULL,
[destMediaCap_maxFramesPerPacket] [varchar](50) NULL,
[destMediaCap_g723BitRate] [varchar](50) NULL,
[destVideoCap_Codec] [varchar](50) NULL,
[destVideoCap_Bandwidth] [varchar](50) NULL,
[destVideoCap_Resolution] [varchar](50) NULL,
[destVideoTransportAddress_IP] [varchar](50) NULL,
[destVideoTransportAddress_Port] [varchar](50) NULL,
[destRSVPAudioStat] [varchar](50) NULL,
[destRSVPVideoStat] [varchar](50) NULL,
[dateTimeConnect] [varchar](50) NULL,
[dateTimeDisconnect] [varchar](50) NULL,
[lastRedirectDn] [varchar](50) NULL,
[pkid] [varchar](50) NULL,
[originalCalledPartyNumberPartition] [varchar](50) NULL,
[callingPartyNumberPartition] [varchar](50) NULL,
[finalCalledPartyNumberPartition] [varchar](50) NULL,
[lastRedirectDnPartition] [varchar](50) NULL,
[duration] [varchar](50) NULL,
[origDeviceName] [varchar](50) NULL,
[destDeviceName] [varchar](50) NULL,
[origCallTerminationOnBehalfOf] [varchar](50) NULL,
[destCallTerminationOnBehalfOf] [varchar](50) NULL,
[origCalledPartyRedirectOnBehalfOf] [varchar](50) NULL,
[lastRedirectRedirectOnBehalfOf] [varchar](50) NULL,
[origCalledPartyRedirectReason] [varchar](50) NULL,
[lastRedirectRedirectReason] [varchar](50) NULL,
[destConversationId] [varchar](50) NULL,
[globalCallId_ClusterID] [varchar](50) NULL,
[joinOnBehalfOf] [varchar](50) NULL,
[comment] [varchar](50) NULL,
[authCodeDescription] [varchar](50) NULL,
[authorizationLevel] [varchar](50) NULL,
[clientMatterCode] [varchar](50) NULL,
[origDTMFMethod] [varchar](50) NULL,
[destDTMFMethod] [varchar](50) NULL,
[callSecuredStatus] [varchar](50) NULL,
[origConversationId] [varchar](50) NULL,
[origMediaCap_Bandwidth] [varchar](50) NULL,
[destMediaCap_Bandwidth] [varchar](50) NULL,
[authorizationCodeValue] [varchar](50) NULL,
[outpulsedCallingPartyNumber] [varchar](50) NULL,
[outpulsedCalledPartyNumber] [varchar](50) NULL,
[origIpv4v6Addr] [varchar](50) NULL,
[destIpv4v6Addr] [varchar](50) NULL,
[origVideoCap_Codec_Channel2] [varchar](50) NULL,
[origVideoCap_Bandwidth_Channel2] [varchar](50) NULL,
[origVideoCap_Resolution_Channel2] [varchar](50) NULL,
[origVideoTransportAddress_IP_Channel2] [varchar](50) NULL,
[origVideoTransportAddress_Port_Channel2] [varchar](50) NULL,
[origVideoChannel_Role_Channel2] [varchar](50) NULL,
[destVideoCap_Codec_Channel2] [varchar](50) NULL,
[destVideoCap_Bandwidth_Channel2] [varchar](50) NULL,
[destVideoCap_Resolution_Channel2] [varchar](50) NULL,
[destVideoTransportAddress_IP_Channel2] [varchar](50) NULL,
[destVideoTransportAddress_Port_Channel2] [varchar](50) NULL,
[destVideoChannel_Role_Channel2] [varchar](50) NULL
) ON [PRIMARY]
GO
Second:
create new text file C:\sqldata\myDatafile.txt
then copy the below data and paste it in that file:
"cdrRecordType","globalCallID_callManagerId","globalCallID_callId","origLegCallIdentifier","dateTimeOrigination","origNodeId","origSpan","origIpAddr","callingPartyNumber","callingPartyUnicodeLoginUserID","origCause_location","origCause_value","origPrecedenceLevel","origMediaTransportAddress_IP","origMediaTransportAddress_Port","origMediaCap_payloadCapability","origMediaCap_maxFramesPerPacket","origMediaCap_g723BitRate","origVideoCap_Codec","origVideoCap_Bandwidth","origVideoCap_Resolution","origVideoTransportAddress_IP","origVideoTransportAddress_Port","origRSVPAudioStat","origRSVPVideoStat","destLegIdentifier","destNodeId","destSpan","destIpAddr","originalCalledPartyNumber","finalCalledPartyNumber","finalCalledPartyUnicodeLoginUserID","destCause_location","destCause_value","destPrecedenceLevel","destMediaTransportAddress_IP","destMediaTransportAddress_Port","destMediaCap_payloadCapability","destMediaCap_maxFramesPerPacket","destMediaCap_g723BitRate","destVideoCap_Codec","destVideoCap_Bandwidth","destVideoCap_Resolution","destVideoTransportAddress_IP","destVideoTransportAddress_Port","destRSVPAudioStat","destRSVPVideoStat","dateTimeConnect","dateTimeDisconnect","lastRedirectDn","pkid","originalCalledPartyNumberPartition","callingPartyNumberPartition","finalCalledPartyNumberPartition","lastRedirectDnPartition","duration","origDeviceName","destDeviceName","origCallTerminationOnBehalfOf","destCallTerminationOnBehalfOf","origCalledPartyRedirectOnBehalfOf","lastRedirectRedirectOnBehalfOf","origCalledPartyRedirectReason","lastRedirectRedirectReason","destConversationId","globalCallId_ClusterID","joinOnBehalfOf","comment","authCodeDescription","authorizationLevel","clientMatterCode","origDTMFMethod","destDTMFMethod","callSecuredStatus","origConversationId","origMediaCap_Bandwidth","destMediaCap_Bandwidth","authorizationCodeValue","outpulsedCallingPartyNumber","outpulsedCalledPartyNumber","origIpv4v6Addr","destIpv4v6Addr","origVideoCap_Codec_Channel2","origVideoCap_Bandwidth_Channel2","origVideoCap_Resolution_Channel2","origVideoTransportAddress_IP_Channel2","origVideoTransportAddress_Port_Channel2","origVideoChannel_Role_Channel2","destVideoCap_Codec_Channel2","destVideoCap_Bandwidth_Channel2","destVideoCap_Resolution_Channel2","destVideoTransportAddress_IP_Channel2","destVideoTransportAddress_Port_Channel2","destVideoChannel_Role_Channel2"
INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR(50),VARCHAR(128),INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR(64),VARCHAR(64),INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR(50),VARCHAR(50),VARCHAR(128),INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR(64),VARCHAR(64),INTEGER,INTEGER,VARCHAR(50),UNIQUEIDENTIFIER,VARCHAR(50),VARCHAR(50),VARCHAR(50),VARCHAR(50),INTEGER,VARCHAR(129),VARCHAR(129),INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR(50),INTEGER,VARCHAR(2048),VARCHAR(50),INTEGER,VARCHAR(32),INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR(32),VARCHAR(50),VARCHAR(50),VARCHAR(64),VARCHAR(64),INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER
1,2,2759873,35208306,1330847184,2,0,-637263956,"5838","",0,0,4,-637263956,24692,4,20,0,0,0,0,0,0,"0","0",35208307,6,35208307,-2096103670,"90556138315","90556138315","",0,16,4,-2096103670,23090,4,20,0,0,0,0,0,0,"0","0",1330847195,1330847219,"90556138315","37d523ab-680b-41a9-ab6b-d9867974f044","Part_National","Part_DU_CCs_NAT","Part_National","Part_National",24,"SEP180373C4463E","10.255.15.131",0,12,0,0,0,0,0,"StandAloneCluster",0,"","",0,"",3,1,0,0,64,64,"","043699155","90556138315","172.31.4.218","10.255.15.131",0,0,0,0,0,0,0,0,0,0,0,0
1,2,2759107,35206523,1330846644,2,35206523,-737214710,"042861396","",0,0,4,-2129658102,19000,4,20,0,0,0,0,0,0,"0","0",35206524,7,0,1562582956,"6894","6894","",0,16,4,1562582956,18658,4,20,0,0,0,0,0,0,"0","0",1330846645,1330847219,"6894","a1df3ed4-0b42-4974-8c60-50cb9d696d5c","Part_India","","Part_India","Part_India",574,"10.255.14.212","SEP00269944A143",0,12,0,0,0,0,0,"StandAloneCluster",0,"","",0,"",1,3,0,0,64,64,"","","","10.255.15.129","172.31.35.93",0,0,0,0,0,0,0,0,0,0,0,0
Third:
This is the file format: C:\sqldata\CDRimport.fmt
10.0
94
1 SQLCHAR 0 50 "," 1 cdrRecordType Arabic_CI_AS
2 SQLCHAR 0 50 "," 2 globalCallID_callManagerId Arabic_CI_AS
3 SQLCHAR 0 50 "," 3 globalCallID_callId Arabic_CI_AS
4 SQLCHAR 0 50 "," 4 origLegCallIdentifier Arabic_CI_AS
5 SQLCHAR 0 50 "," 5 dateTimeOrigination Arabic_CI_AS
6 SQLCHAR 0 50 "," 6 origNodeId Arabic_CI_AS
7 SQLCHAR 0 50 "," 7 origSpan Arabic_CI_AS
8 SQLCHAR 0 50 ",\"" 8 origIpAddr Arabic_CI_AS
9 SQLCHAR 0 50 "\",\"" 9 callingPartyNumber Arabic_CI_AS
10 SQLCHAR 0 50 "\"," 10 callingPartyUnicodeLoginUserID Arabic_CI_AS
11 SQLCHAR 0 50 "," 11 origCause_location Arabic_CI_AS
12 SQLCHAR 0 50 "," 12 origCause_value Arabic_CI_AS
13 SQLCHAR 0 50 "," 13 origPrecedenceLevel Arabic_CI_AS
14 SQLCHAR 0 50 "," 14 origMediaTransportAddress_IP Arabic_CI_AS
15 SQLCHAR 0 50 "," 15 origMediaTransportAddress_Port Arabic_CI_AS
16 SQLCHAR 0 50 "," 16 origMediaCap_payloadCapability Arabic_CI_AS
17 SQLCHAR 0 50 "," 17 origMediaCap_maxFramesPerPacket Arabic_CI_AS
18 SQLCHAR 0 50 "," 18 origMediaCap_g723BitRate Arabic_CI_AS
19 SQLCHAR 0 50 "," 19 origVideoCap_Codec Arabic_CI_AS
20 SQLCHAR 0 50 "," 20 origVideoCap_Bandwidth Arabic_CI_AS
21 SQLCHAR 0 50 "," 21 origVideoCap_Resolution Arabic_CI_AS
22 SQLCHAR 0 50 "," 22 origVideoTransportAddress_IP Arabic_CI_AS
23 SQLCHAR 0 50 ",\"" 23 origVideoTransportAddress_Port Arabic_CI_AS
24 SQLCHAR 0 50 "\",\"" 24 origRSVPAudioStat Arabic_CI_AS
25 SQLCHAR 0 50 "\"," 25 origRSVPVideoStat Arabic_CI_AS
26 SQLCHAR 0 50 "," 26 destLegIdentifier Arabic_CI_AS
27 SQLCHAR 0 50 "," 27 destNodeId Arabic_CI_AS
28 SQLCHAR 0 50 "," 28 destSpan Arabic_CI_AS
29 SQLCHAR 0 50 ",\"" 29 destIpAddr Arabic_CI_AS
30 SQLCHAR 0 50 "\",\"" 30 originalCalledPartyNumber Arabic_CI_AS
31 SQLCHAR 0 50 "\",\"" 31 finalCalledPartyNumber Arabic_CI_AS
32 SQLCHAR 0 50 "\"," 32 finalCalledPartyUnicodeLoginUserID Arabic_CI_AS
33 SQLCHAR 0 50 "," 33 destCause_location Arabic_CI_AS
34 SQLCHAR 0 50 "," 34 destCause_value Arabic_CI_AS
35 SQLCHAR 0 50 "," 35 destPrecedenceLevel Arabic_CI_AS
36 SQLCHAR 0 50 "," 36 destMediaTransportAddress_IP Arabic_CI_AS
37 SQLCHAR 0 50 "," 37 destMediaTransportAddress_Port Arabic_CI_AS
38 SQLCHAR 0 50 "," 38 destMediaCap_payloadCapability Arabic_CI_AS
39 SQLCHAR 0 50 "," 39 destMediaCap_maxFramesPerPacket Arabic_CI_AS
40 SQLCHAR 0 50 "," 40 destMediaCap_g723BitRate Arabic_CI_AS
41 SQLCHAR 0 50 "," 41 destVideoCap_Codec Arabic_CI_AS
42 SQLCHAR 0 50 "," 42 destVideoCap_Bandwidth Arabic_CI_AS
43 SQLCHAR 0 50 "," 43 destVideoCap_Resolution Arabic_CI_AS
44 SQLCHAR 0 50 "," 44 destVideoTransportAddress_IP Arabic_CI_AS
45 SQLCHAR 0 50 ",\"" 45 destVideoTransportAddress_Port Arabic_CI_AS
46 SQLCHAR 0 50 "\",\"" 46 destRSVPAudioStat Arabic_CI_AS
47 SQLCHAR 0 50 "\"," 47 destRSVPVideoStat Arabic_CI_AS
48 SQLCHAR 0 50 "," 48 dateTimeConnect Arabic_CI_AS
49 SQLCHAR 0 50 ",\"" 49 dateTimeDisconnect Arabic_CI_AS
50 SQLCHAR 0 50 "\",\"" 50 lastRedirectDn Arabic_CI_AS
51 SQLCHAR 0 50 "\",\"" 51 pkid Arabic_CI_AS
52 SQLCHAR 0 50 "\",\"" 52 originalCalledPartyNumberPartition Arabic_CI_AS
53 SQLCHAR 0 50 "\",\"" 53 callingPartyNumberPartition Arabic_CI_AS
54 SQLCHAR 0 50 "\",\"" 54 finalCalledPartyNumberPartition Arabic_CI_AS
55 SQLCHAR 0 50 "\"," 55 lastRedirectDnPartition Arabic_CI_AS
56 SQLCHAR 0 50 ",\"" 56 duration Arabic_CI_AS
57 SQLCHAR 0 50 "\",\"" 57 origDeviceName Arabic_CI_AS
58 SQLCHAR 0 50 "\"," 58 destDeviceName Arabic_CI_AS
59 SQLCHAR 0 50 "," 59 origCallTerminationOnBehalfOf Arabic_CI_AS
60 SQLCHAR 0 50 "," 60 destCallTerminationOnBehalfOf Arabic_CI_AS
61 SQLCHAR 0 50 "," 61 origCalledPartyRedirectOnBehalfOf Arabic_CI_AS
62 SQLCHAR 0 50 "," 62 lastRedirectRedirectOnBehalfOf Arabic_CI_AS
63 SQLCHAR 0 50 "," 63 origCalledPartyRedirectReason Arabic_CI_AS
64 SQLCHAR 0 50 "," 64 lastRedirectRedirectReason Arabic_CI_AS
65 SQLCHAR 0 50 ",\"" 65 destConversationId Arabic_CI_AS
66 SQLCHAR 0 50 "\"," 66 globalCallId_ClusterID Arabic_CI_AS
67 SQLCHAR 0 50 ",\"" 67 joinOnBehalfOf Arabic_CI_AS
68 SQLCHAR 0 50 "\",\"" 68 comment Arabic_CI_AS
69 SQLCHAR 0 50 "\"," 69 authCodeDescription Arabic_CI_AS
70 SQLCHAR 0 50 ",\"" 70 authorizationLevel Arabic_CI_AS
71 SQLCHAR 0 50 "\"," 71 clientMatterCode Arabic_CI_AS
72 SQLCHAR 0 50 "," 72 origDTMFMethod Arabic_CI_AS
73 SQLCHAR 0 50 "," 73 destDTMFMethod Arabic_CI_AS
74 SQLCHAR 0 50 "," 74 callSecuredStatus Arabic_CI_AS
75 SQLCHAR 0 50 "," 75 origConversationId Arabic_CI_AS
76 SQLCHAR 0 50 "," 76 origMediaCap_Bandwidth Arabic_CI_AS
77 SQLCHAR 0 50 ",\"" 77 destMediaCap_Bandwidth Arabic_CI_AS
78 SQLCHAR 0 50 "\",\"" 78 authorizationCodeValue Arabic_CI_AS
79 SQLCHAR 0 50 "\",\"" 79 outpulsedCallingPartyNumber Arabic_CI_AS
80 SQLCHAR 0 50 "\",\"" 80 outpulsedCalledPartyNumber Arabic_CI_AS
81 SQLCHAR 0 50 "\",\"" 81 origIpv4v6Addr Arabic_CI_AS
82 SQLCHAR 0 50 "\"," 82 destIpv4v6Addr Arabic_CI_AS
83 SQLCHAR 0 50 "," 83 origVideoCap_Codec_Channel2 Arabic_CI_AS
84 SQLCHAR 0 50 "," 84 origVideoCap_Bandwidth_Channel2 Arabic_CI_AS
85 SQLCHAR 0 50 "," 85 origVideoCap_Resolution_Channel2 Arabic_CI_AS
86 SQLCHAR 0 50 "," 86 origVideoTransportAddress_IP_Channel2 Arabic_CI_AS
87 SQLCHAR 0 50 "," 87 origVideoTransportAddress_Port_Channel2 Arabic_CI_AS
88 SQLCHAR 0 50 "," 88 origVideoChannel_Role_Channel2 Arabic_CI_AS
89 SQLCHAR 0 50 "," 89 destVideoCap_Codec_Channel2 Arabic_CI_AS
90 SQLCHAR 0 50 "," 90 destVideoCap_Bandwidth_Channel2 Arabic_CI_AS
91 SQLCHAR 0 50 "," 91 destVideoCap_Resolution_Channel2 Arabic_CI_AS
92 SQLCHAR 0 50 "," 92 destVideoTransportAddress_IP_Channel2 Arabic_CI_AS
93 SQLCHAR 0 50 "," 93 destVideoTransportAddress_Port_Channel2 Arabic_CI_AS
94 SQLCHAR 0 50 "\n" 94 destVideoChannel_Role_Channel2 Arabic_CI_AS
Finally, run this SQL command:
BULK INSERT CDR FROM 'C:\sqldata\myDatafile.txt'
WITH (FORMATFILE='C:\sqldata\CDRimport.fmt', FIRSTROW=3)
It should insert 2 rows, however it only inserts 1 row. Does anyone have any idea why this is the case?
Upvotes: 1
Views: 7405
Reputation: 181
From books online: "The FIRSTROW attribute is not intended to skip column headers." http://msdn.microsoft.com/en-US/library/ms188365(v=sql.90).aspx
Basically, MS is moving away from Bulk Insert/bcp, in favor of SSIS.
The reason your header rows are throwing off the bulk insert is that your format file specifies that a row should always have exactly 57 commas, 36 quote and comma combinations, and a newline (order matters too.) Since your second header row doesn't have the quote-comma delimeters, it's going to the next line to find the rest of the columns. By the way, bulk insert also doesn't support extra delimiters in your values, even if they're escaped or contained within quotes. Based on your format file, I'm guessing you anticipate they might.
Upvotes: 1