如何使用c#控制台应用程序将CSV文件导出到SQL Server

时间:2014-07-11 06:41:50

标签: c# sql-server csv

SqlServer数据库中的表名: MyTable

Csv文件位置: @" d:MyFile.csv"

如何复制CSV文件" @" d:MyFile.csv "到" MyTable "使用 C#控制台应用程序的SQL服务器数据库中存在的表?!!!

我使用以下C#代码从数据库导出到CSV文件。但是如何做反向任务?!!!

        string strConn = "Data Source=MYSERVER;Initial Catalog=Master;Integrated Security=True";
        SqlConnection conn = new SqlConnection(strConn);
        SqlDataAdapter da = new SqlDataAdapter("select * from QuickBook", conn);
        DataSet ds = new DataSet();
        da.Fill(ds, "QB");
        DataTable dt = ds.Tables["QB"];
        StreamWriter sw = new StreamWriter(@"d:MyFile.csv", false);
        int iColCount = dt.Columns.Count;

        for (int i = 0; i < iColCount; i++)
        {
            sw.Write(dt.Columns[i]);
            if (i < iColCount - 1)
            {
                sw.Write(",");
            }
        }

        sw.Write(sw.NewLine);

        foreach (DataRow dr in dt.Rows)
        {
            for (int i = 0; i < iColCount; i++)
            {
                if (!Convert.IsDBNull(dr[i]))
                {
                   sw.Write(dr[i].ToString());
                }

                if (i < iColCount - 1)
                {
                    sw.Write(",");
                }
            }

            sw.Write(sw.NewLine);
        }

        sw.Close();

    }
}

3 个答案:

答案 0 :(得分:1)

请参阅本网站上的Codeproject Linksimilar question

答案 1 :(得分:0)

首先,您不希望&#34;将CSV文件导出到SQL Server&#34;,您希望&#34;从SQL Server&#34;导出CSV文件。它不一样。

我使用EntityFramework从日期库生成模型。你只需要花两分钟时间生成模型。

添加新项目&gt;数据&gt; ADO.Net实体数据模型&gt;从数据库生成并选择您的连接(或创建一个新连接)。下一步是选择要导出的表。

最后,您只需要查看数据上下文(DbSet)的属性,当然可以使用LINQ过滤元素。

string path = Path.Combine("D", "MyFile.csv");

using (var dataContext = new MyDataContext())
{
    using (StreamWriter sw = new StreamWriter(path))
    {
        StringBuilder line = new StringBuilder();
        foreach (var quickBook in dataContext.QuickBooks)
        {
            line.AppendFormat("{0};", quickBook.Name);
            // Append the other properties (remember the culture with the numbers)

            sw.WriteLine(line.ToString());
            line.Clear();
        }
    }
}

一个消息:在你的情况下,你可以查看一个类的所有属性&#34; QuickBook&#34;:

foreach (PropertyInfo property in typeof(QuickBook).GetProperties())
{
    object value = property.GetValue(quickBook, null);
    if (value == null)
        line.Append(";");
    else
        line.AppendFormat("{0};", value);
}

if (line.Length > 0) //Removes the last ';'
    line.Remove(line.Length - 1, 1);

答案 2 :(得分:0)

使用EntityFramework的反向任务可能是这样的:

string path = Path.Combine("D", "MyFile.csv");

using (var dataContext = new MyDataContext())
{
    using (StreamReader stream = new StreamReader(path))
    {
        string line;

        while ((line = stream.ReadLine()) != null)
        {
            string[] columns = stream.ReadLine().Split(';');

            QuickBook item = new QuickBook();
            item.Name = columns[0];
            // And so on with the other properties...

            dataContext.QuickBooks.Add(item);
        }
    }

    dataContext.SaveChanges();
}