使用CSV文件作为数据库的效率

时间:2014-03-14 02:20:51

标签: c# tsql csv

我有一个需要查询的大型(350 MB)CSV文件。我每天都将数据文件作为数据转储获取一次,因此我可以对这些数据进行日常处理。一旦我有了数据,我想以更频繁的间隔查询它。我想知道如何最好地做到这一点。

我在想我有两种选择。

  1. OleDbConnection联系,然后使用OleDbDataAdapter直接查询,就像这样

    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + base.applicationRoot + ";" + "Extended Properties=\"text;HDR=Yes;FMT=CSVDelimited\"");
    
    OleDbDataAdapter adapter = new OleDbDataAdapter(String.Format("select something from [{0}]", base.csvFileName), conn);
    
  2. 将我收到的整个csv文件传输到2012 sql server数据库表中,然后从该sql表中进行查询。
  3. 什么是更好的方法。或者,将CSV文件用作数据库(只读)的效率如何?

2 个答案:

答案 0 :(得分:3)

我会将csv插入数据库以获得更强大的查询功能。 如果您使用的是SQL Server,则甚至可以使用标准的批量插入命令批量插入csv。

http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server/

答案 1 :(得分:1)

如果是离线解决方案,您可以使用SQLite而不是Sql Server。与CSV相比,这将提供良好的性能,但每天构建一次的开销很大。