【问题标题】:Transferring data from an Excel file into a MySQL table将数据从 Excel 文件传输到 MySQL 表
【发布时间】:2014-05-23 17:52:19
【问题描述】:

我有一个 Excel 2003 电子表格,需要导入 MySQL。我有一个名为dev_products 的表,其中包含两个字段; product_id 和 product_description。 Excel 文件具有完全相同的列结构 - 但我不知道如何传输数据(通过代码 - 因为我将不得不再次这样做)。

我能够连接到该文件....但这就是我所能获得的....我真的需要一些帮助。

谢谢 - 一如既往。

    const string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + strExcelFilenameandLocation + "; Extended Properties=Excel 8.0;";
    OleDbConnection xlConn = new OleDbConnection(connectionString);
    xlConn.Open();

    string strQuery = "??????????";

    var con = new MySqlConnection(ClsVariables.StrDb);
    con.Open();
    MySqlCommand command = new MySqlCommand(strQuery, con);
    command.ExecuteNonQuery();
    con.Close();
    xlConn.Close();

【问题讨论】:

  • 退房:stackoverflow.com/q/19133317/2655508 这个问题向您展示了它是如何完成的。如果您只需要一些列,请务必将它们放在 [] 之间。请记住,这是它的 excel 部分。

标签: c# mysql


【解决方案1】:

将excel文件保存在csv中

  1. 使用 mysql 批量插入直接插入到 db BULK INSERT in MYSQL

  2. 使用下面给出的函数从 csv 读取数据 该函数将返回 DataTable 中的数据 提取数据并创建 mysql 查询以插入到数据库中

    using System.IO;
    using System.Windows.Forms;
    using System.Data;
    public class readCSV
    {
    public DataTable getDataTable()
    {
        DataTable dTable = new DataTable();
        try
        {
            using (StreamReader readFile = new StreamReader(this.filename))
            {
                string line;
                string[] row;
                int rowcount = 0;
                DataRow dRow;
    
                while ((line = readFile.ReadLine()) != null)
                {
                    row = line.Split(',');
                    dRow = dTable.NewRow();
    
                    for (int i = 0; i < row.Length; i++)
                    {
                        if (rowcount == 0)
                        {
                            dTable.Columns.Add(row[i]);
                        }
                        else
                        {
                            dRow[dTable.Columns[i]] = row[i];
                        }
                    }
    
                    if (rowcount != 0)
                    {
                        dTable.Rows.Add(dRow);
                    }
                    rowcount++;
                }
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }
    
        return dTable;
    }
    }
    

【讨论】:

  • 非常感谢 - 这是一个非常大的帮助。
【解决方案2】:

使用sql命令直接导入的简单方法

另存为文本(CSV)并在mysql命令行客户端中使用LOAD DATA INFILE LOCAL来加载文件...

http://dev.mysql.com/doc/refman/5.0/en/load-data.html

--

参考:http://forums.mysql.com/read.php?32,216343,216344#msg-216344

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多