加载 pcap 文件的数据并插入 SQL 服务器 table
Load data of a pcap file and insert into a SQL Server table
我有一个扩展名为 .pcap
的文件,我想将该文件的所有数据插入到 SQL 服务器数据库的 table 中。
我曾尝试使用 BULK INSERT
,因为我用它来加载 .csv
文件并将 csv 文件的所有数据插入 table。但现在我想加载一个 .pcap
文件并将该文件的数据插入 SQL 服务器数据库。
我可以在 WireShark 中打开 .pcap
文件,但我想将所有数据加载到 SQL 服务器数据库中。下面是我正在尝试执行此操作的代码::
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
The bulk load failed. The column is too long in the data file for row 1, column 7. Verify that the field terminator and row terminator are specified correctly.
Msg 7301, Level 16, State 2, Line 1
Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for linked server "(null)".
我用谷歌搜索得到 .pcap
文件的字段终止符,但没有成功...
提前致谢。
I have googled it to get the field terminator of .pcap
file but no luck...
没有 "field terminator" 的 pcap 文件,这就是你运气不好的原因。
一个 pcap 文件有一堆记录,其中包含在网络上传输的原始数据包字节;它没有您列出的值 - "Number" 只是数据包的序列号(第一个数据包有 1,第二个数据包有 2,等等),其余的是 Wireshark 或 TShark 解析的结果根据数据包中协议的规范(或逆向工程信息)的原始数据包字节,它们不会直接出现在 pcap 文件中。
你可以做的是运行 TShark 处理数据包,捕获它打印的输出列,然后处理那 数据并将其放入数据库。
以下是将 pCap 文件转换为 csv 格式的命令:
tshark -T fields -n -r {the pathname of the capture file} -E
separator=, -e {first field name} -e {second field name} ... >{the
pathname of the output file}
其中 {the pathname of the capture file}
是您正在读取的捕获文件的路径名,{first field name}, {second field name}
等是字段的名称,{the pathname of the output file}
是输出的路径名文件。
这里是TShark将pCap文件转换为CSV文件格式的最终命令:
tshark -T fields -n -r C:\capture.pcap -E separator=, -e ip.src -e ip.dst >C:\output.csv
现在我们有了 CSV 格式的 pCap 文件,现在可以 Insert/Add 在 sql 服务器数据库中 table。
注:tshark
=C:\Program Files\Wireshark\tshark.exe
我有一个扩展名为 .pcap
的文件,我想将该文件的所有数据插入到 SQL 服务器数据库的 table 中。
我曾尝试使用 BULK INSERT
,因为我用它来加载 .csv
文件并将 csv 文件的所有数据插入 table。但现在我想加载一个 .pcap
文件并将该文件的数据插入 SQL 服务器数据库。
我可以在 WireShark 中打开 .pcap
文件,但我想将所有数据加载到 SQL 服务器数据库中。下面是我正在尝试执行此操作的代码::
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
The bulk load failed. The column is too long in the data file for row 1, column 7. Verify that the field terminator and row terminator are specified correctly.Msg 7301, Level 16, State 2, Line 1
Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for linked server "(null)".
我用谷歌搜索得到 .pcap
文件的字段终止符,但没有成功...
提前致谢。
I have googled it to get the field terminator of
.pcap
file but no luck...
没有 "field terminator" 的 pcap 文件,这就是你运气不好的原因。
一个 pcap 文件有一堆记录,其中包含在网络上传输的原始数据包字节;它没有您列出的值 - "Number" 只是数据包的序列号(第一个数据包有 1,第二个数据包有 2,等等),其余的是 Wireshark 或 TShark 解析的结果根据数据包中协议的规范(或逆向工程信息)的原始数据包字节,它们不会直接出现在 pcap 文件中。
你可以做的是运行 TShark 处理数据包,捕获它打印的输出列,然后处理那 数据并将其放入数据库。
以下是将 pCap 文件转换为 csv 格式的命令:
tshark -T fields -n -r {the pathname of the capture file} -E separator=, -e {first field name} -e {second field name} ... >{the pathname of the output file}
其中 {the pathname of the capture file}
是您正在读取的捕获文件的路径名,{first field name}, {second field name}
等是字段的名称,{the pathname of the output file}
是输出的路径名文件。
这里是TShark将pCap文件转换为CSV文件格式的最终命令:
tshark -T fields -n -r C:\capture.pcap -E separator=, -e ip.src -e ip.dst >C:\output.csv
现在我们有了 CSV 格式的 pCap 文件,现在可以 Insert/Add 在 sql 服务器数据库中 table。
注:tshark
=C:\Program Files\Wireshark\tshark.exe