.net - 优化 Blade

标签 .net mysql sql-server

我在 VB .Net 中做了一个导入程序,女巫从 SQLServer 获取数据,然后通过 ADSL 连接将这些数据插入远程 MySQL 服务器。

第一次,大约有 200 条记录,但现在有超过 500.000 条记录,导出所有数据花费了大约 11 小时,这很糟糕,非常糟糕。

我需要优化我的导入器,女巫现在将数据放入数据表中,我有一个带有循环(行到行)的函数女巫使用“插入”查询插入数据... 像这样:

            For Each dr As DataRow In dt.Rows
            Console.Write(".")

            Dim sql As String = "INSERT INTO clientes(id,nombrefis,nombrecom,direccion,codpos,municipio_id,telefono,fax,cif)" & _
                        "VALUES (@id,@nombrefis,@nombrecom,@direccion,@codpos,@municipio_id,@telefono,@fax,@cif)"
            cmd = New MySqlCommand(sql, cnn)
            cmd.Parameters.AddWithValue("id", Int32.Parse(dr("ID EMPRESA").ToString))
            cmd.Parameters.AddWithValue("nombrefis", dr("NOMEMP"))
            cmd.Parameters.AddWithValue("nombrecom", dr("EMPRESA"))
            cmd.Parameters.AddWithValue("direccion", dr("DIRECC"))
            cmd.Parameters.AddWithValue("codpos", dr("CODPOS"))
            cmd.Parameters.AddWithValue("municipio_id", Int32.Parse(dr("CODIGO MUNICIPIO")).ToString)
            cmd.Parameters.AddWithValue("telefono", dr("TELEF"))
            cmd.Parameters.AddWithValue("fax", dr("FAX"))
            cmd.Parameters.AddWithValue("cif", dr("CIF"))
            cmd.ExecuteNonQuery()
        Next

有什么想法或建议吗? 非常感谢

最佳答案

  1. 创建命令、添加参数并在循环之前准备命令(Prepare 方法)。然后在循环中,设置参数值并执行命令
  2. 以 1000 条左右的命令为批处理执行交易中的命令

编辑:我刚刚意识到您正在使用 MySQL...所以除非您正在使用 InnoDB 表,否则您不能使用事务。无论如何,你仍然可以使用我的第一个建议,让命令只准备一次

关于.net - 优化 Blade ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2471376/

相关文章:

c# - WinForms 应用程序的最佳数据访问模型

c# - 在发生异常时将自定义对象传递给 RunWorkerCompleted 事件

mysql - 如何在查询中选择非 MAX() 的记录

.net - 使用 GhostScript 将 PDF 转换为图像。无需创建图像文件

mysql - 将 SUM 添加到 SQL 查询使其持续 7 分钟而不是 3 秒

MySQL Workbench : How can I see the detailed SQL query and errors when I use the "Apply" button?(确认弹出窗口)

SQL Server 查询 : Adjust money column

sql - 重复数据问题SQL

sql-server - 为表中每条记录的字段添加 1

c# - 将时间跨度格式化为 TotalMilliseconds