如何对CSV文件使用SQL

我想使用C#在CSV文件上使用SQL查询。 java 这里有类似的东西。 c#有这样的东西吗?

您可以使用适当的OLE DB提供程序来查询文本文件。 您可以在此处找到查询字符串:

Textfile连接字符串示例

您可以使用ODBC对CSV文件运行查询:

 string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};" + "Dbq=C:;Extensions=csv,txt"; OdbcConnection objCSV = new OdbcConnection(strConn); objCSV.Open(); OdbcCommand oCmd = new OdbcCommand("select column1,column2 " + "from THECSVFILE.CSV", objCSV); OdbcDataReader oDR = oCmd.ExecuteReader(); while (oDR.read()) { // Do something } 
 // need to add // using System.Linq; void Main() { var path = @"C:\myfile.csv"; string csv = System.IO.File.ReadAllText( path ); var array = csv.Split(new[]{","}, StringSplitOptions.RemoveEmptyEntries); // Do the mapping with your databinding object var personArray = array.Select(p => new Person { Name = p}); // You need to have this DataContext defined somewhere, for instance using LinqToSql using(var context = new PersonDataContext()){ context.InsertAllOnSubmit(personArray); context.SubmitChanges(); } } // Imagine this class is one of linqToSql class public class Person{ public string Name {get;set;} } 

您可以使用Openrowsets。

首先在SQL配置中启用SQL Ad Hoc / Openrowset。 启用后,您将能够连接SQL Server Managerment工作室并查询Excel和逗号分隔文件。

您的查询将类似于:

 SELECT * FROM OPENROWSET('MSDASQL','Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir={your path}','SELECT * FROM ypurtextfile.csv') 

您可以在C#代码中使用这些查询,就像查询任何其他表一样。 只需咨询您的经理,他就可以在SQL Server上启用ad hoc