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

Search string from large amount of data(millions of record in CSV file)

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

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

我可以从 csv 文件进行搜索而不将其导入 SQL 吗? 有没有具体的method/way来存储数据? 是否有任何文本搜索工具或可以在 MS SQL 中完成? 我们将不胜感激。

您可以使用OPENROWSET直接在SQL服务器

中读取您的CSV文件

您需要启用 "Ad Hoc Distributed Queries":

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

Can i do search from csv file without importing it in SQL?

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

If there any specific method/way to store data?

取决于您需要如何处理比赛。您需要对结果做什么?

Is there any tools for text search or it can be done in MS SQL?

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