【发布时间】:2012-05-24 08:31:06
【问题描述】:
我想使用 C# 对 CSV 文件使用 SQL 查询。 java here 有类似的东西。 c#有这样的东西吗?
【问题讨论】:
我想使用 C# 对 CSV 文件使用 SQL 查询。 java here 有类似的东西。 c#有这样的东西吗?
【问题讨论】:
您可以使用 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
}
【讨论】:
您可以使用适当的 OLE DB 提供程序来查询文本文件。您可以在此处找到查询字符串:
【讨论】:
mm.dd.yyyy 或mm-dd-yyyy?
// 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 管理工作室并查询 Excel 和逗号分隔的文件。
您的查询将类似于:
SELECT * FROM OPENROWSET('MSDASQL','Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir={your path}','SELECT * FROM ypurtextfile.csv')
您可以在 C# 代码中使用这些查询,就像查询任何其他表一样。 只需与您的经理确认他是否同意您在 SQL Server 上启用 ad hoc
【讨论】: