如何使用asp.net将数据从csv文件插入数据库

时间:2014-06-15 09:21:40

标签: asp.net csv sql-server-2012

我正在尝试插入以csv格式保存的数据。我尝试了下面的代码,但问题是当我运行代码时它只保存第二行的数据。任何人都纠正我的代码,以便我可以保存我的来自第一行的数据。

代码: -

 protected void Page_Load(object sender, EventArgs e)
    {
        csvInsert();
    }

    public void csvInsert()
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connectme"].ConnectionString);
        conn.Open();
        //DataTable dt = new DataTable("insert");
        string filename = "C:\\Users\\Aowi\\Desktop\\asdf.csv";

        SqlTransaction transaction = conn.BeginTransaction();

        try
        {
            using (StreamReader file = new StreamReader(filename))
            {

                CsvReader csv = new CsvReader(file, true, '\t');
                SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity, transaction);
                copy.DestinationTableName = "[Live]";
                copy.WriteToServer(csv);
                transaction.Commit();
            }
        }
        catch (Exception ex)
        {
            transaction.Rollback();
        }
        finally
        {
            conn.Close();
        }

    }

在数据库中保存为: -

enter image description here

csv文件是: -

1,Germany,? - ?,Portugal
2,half-time,(? - ?),
3
4,Milorad Mazic (Serbia),
5,Iran,? - ?,Nigeria
6,half-time,(? - ?),
7
8,Carlos Vera (Ecuador),
9,Ghana,? - ?,USA
10,half-time,(? - ?),

所需的输出是将csv文件中的每个数据插入数据库中的每个单元格。

1 个答案:

答案 0 :(得分:0)

看起来CSV阅读器需要标题行。尝试在顶部添加标题,看看是否可以解析。尝试将FALSE传递给CSVReader。看起来该标志可能用于表示您是否有标题行。