首页 > 解决方案 > 从大量数据中搜索字符串(CSV文件中的数百万条记录)

问题描述

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

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

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

标签: sql-serverlarge-data

解决方案


您可以使用直接在 SQL ServerOPENROWSET中读取文件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 文件(文本文件驱动程序)

例子:

[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

推荐阅读