我在csv文件中有数百万条记录,我需要进行字符串比较并在Bootstrap数据表中显示过滤的记录。 每天都会更新CSV文件,并记录数百万条记录。
注意: 如果我将csv文件导入sql数据库并在表中应用搜索查询以获取结果,则会花费很多时间。
我可以从csv文件中搜索而不将其导入SQL吗? 是否有任何特定的方法/方式来存储数据? 是否有用于文本搜索的工具,或者可以在MS SQL中完成? 每一个帮助将不胜感激。
我在csv文件中有数百万条记录,我需要进行字符串比较并在Bootstrap数据表中显示过滤的记录。 每天都会更新CSV文件,并记录数百万条记录。
注意: 如果我将csv文件导入sql数据库并在表中应用搜索查询以获取结果,则会花费很多时间。
我可以从csv文件中搜索而不将其导入SQL吗? 是否有任何特定的方法/方式来存储数据? 是否有用于文本搜索的工具,或者可以在MS SQL中完成? 每一个帮助将不胜感激。
您可以使用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中完成?
是的。如果数据库不是关系数据库,则它不是最佳的存储位置。如果您需要在这些文本文件中找到特定的模式,请查看正则表达式。