加载pcap文件的数据并插入SQL Server表

时间:2016-03-23 08:16:18

标签: sql-server bulkinsert pcap

我有一个扩展名为.pcap的文件,我希望将此文件的所有数据插入到SQL Server数据库的表中。

我尝试使用BULK INSERT,因为我使用它来加载.csv文件并在表格中插入csv文件的所有数据。但是现在我想加载一个.pcap文件并将该文件的数据插入到SQL Server数据库中。

我可以在WireShark中打开.pcap文件,但我想将所有数据加载到SQL Server数据库中。下面是我试图做的代码::

 CREATE TABLE #DataUpdation
 (
        Number BigInt
        ,Time_ VarChar(512)
        ,Source_ VarChar(512)
        ,Destination_ VarChar(512)
        ,Protocol_ VarChar(512)
        ,Length_ VarChar(512)
        ,Info VarChar(8000)
    )

    DECLARE @Query VARCHAR(Max)
    SET @Query=
     'BULK INSERT #DataUpdation
       FROM '+char(39)+'C:\Sample.pcap'+char(39)+'
       WITH
       (      
          FIELDTERMINATOR = '','',
          ROWTERMINATOR = ''\n'',
          FIRSTROW = 2 ,
          MAXERRORS =0 
       )'
    EXECUTE(@Query) ;

这是错误:

  

Msg 4866,Level 16,State 8,Line 1
  批量加载失败。第1行第7列的数据文件中的列太长。验证是否正确指定了字段终止符和行终止符。

     

Msg 7301,Level 16,State 2,Line 1
  无法从OLE DB提供程序“BULK”获取链接服务器“(null)”所需的接口(“IID_IColumnsInfo”)。

我用谷歌搜索它来获取.pcap文件的字段终止符,但没有运气......

提前致谢。

2 个答案:

答案 0 :(得分:0)

  

我用谷歌搜索它来获取.pcap文件的字段终止符,但没有运气......

no"字段终结符"对于pcap文件,这就是你没有运气的原因。

pcap文件有一堆记录,包含在网络上传输的原始数据包字节;它没有你列出的值 - " Number"只是数据包的序列号(第一个数据包有1个,第二个数据包有2个等),其余部分是Wireshark或TShark根据规范(或反向工程信息)解析原始数据包字节的结果对于数据包中的协议,它们不会直接出现在pcap文件中。

您可以做的是在数据包上运行TShark,捕获它打印的输出列,然后处理 数据并将其放入数据库。

答案 1 :(得分:0)

以下是将pCap文件转换为csv格式的命令:

  

tshark -T fields -n -r {捕获文件的路径名} -E   separator =, - e {first field name} -e {second field name} ...> {the   输出文件的路径名}

其中ng-app是您正在阅读的捕获文件的路径名,{the pathname of the capture file}等等是字段的名称,{first field name}, {second field name}是输出的路径名文件。

以下是TShark将pCap文件转换为CSV文件格式的最终​​命令:

{the pathname of the output file}

现在我们有了CSV格式的pCap文件,现在可以在sql server数据库表中插入/添加它。

注意: tshark -T fields -n -r C:\capture.pcap -E separator=, -e ip.src -e ip.dst >C:\output.csv = tshark