如何对CSV文件使用SQL

问题描述 投票:7回答:5

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

c# sql csv
5个回答
6
投票

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

Textfile Connection String Samples


7
投票

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

// using System.Data.Odbc;

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
}


1
投票
// 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;}
}

0
投票

您可以使用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

© www.soinside.com 2019 - 2024. All rights reserved.