从大量数据中搜索字符串(CSV文件中有数百万条记录)

我在csv文件中有数百万条记录,我需要进行字符串比较并在Bootstrap数据表中显示过滤的记录。 每天都会更新CSV文件,并记录数百万条记录。

注意: 如果我将csv文件导入sql数据库并在表中应用搜索查询以获取结果,则会花费很多时间。

我可以从csv文件中搜索而不将其导入SQL吗? 是否有任何特定的方法/方式来存储数据? 是否有用于文本搜索的工具,或者可以在MS SQL中完成? 每一个帮助将不胜感激。

moochendi 回答:从大量数据中搜索字符串(CSV文件中有数百万条记录)

您可以使用OPENROWSET直接在SQL Server中读取CSV文件

您将需要启用“临时分布式查询”:

EXEC sp_configure 'show advanced options',1
GO
RECONFIGURE
GO
GO
EXEC sp_configure 'ad hoc distributed queries',1
GO
RECONFIGURE
GO

然后您以这种方式定义数据源:

SELECT * 
FROM OPENROWSET(
    'Microsoft.ACE.OLEDB.12.0','Text;Database=C:\Temp\;IMEX=1;',-- the path to csv file
    [data_file#csv] -- csv file name,please note # instead of dot
) as t

如果您的文件是真实的CSV(逗号分隔),则应使用默认设置。

如果您的文件不是真正的CSV(逗号分隔),则可以定义自己的文件格式,只需将名为“ SCHEMA.INI”的文件放在csv文件的同一文件夹中即可。

此schema.ini文件必须包含带有数据文件结构定义的部分。 (请参阅此处Schema.ini File (Text File Driver)的详细信息)

示例:

[data_file.csv]
Format=Delimited(;)
DecimalSymbol=.
ColNameHeader=True
MaxScanRows=10
Col1=ID Long
Col2=DESCR  char width 4
Col3=FIELD_X  char width 255
Col4=FIELD_Y  DateTime
...
...
Coln=aFieldName aDataType aWidth
,
  

我可以从csv文件中搜索而不将其导入SQL吗?

是的,有很多方法。如果您使用的是Windows,则可以使用命令提示符find命令。 find "string to find" C:\Windows\file.csv

  

是否有任何特定的方法/方式来存储数据?

取决于您需要如何进行匹配。您需要如何处理结果?

  

是否有用于文本搜索的工具,或者可以在MS SQL中完成?

是的。如果数据库不是关系数据库,则它不是最佳的存储位置。如果您需要在这些文本文件中找到特定的模式,请查看正则表达式。

本文链接:https://www.f2er.com/3067699.html

大家都在问