为什么 R 上传数据比 KNIME 或 Workbench 快得多?

Why does R upload data much faster than KNIME or Workbench?

我想知道的是,当我通过 R 上传数据并且它比 MySQL Workbench 或 KNIME 快得多时,到底发生了什么?

我处理数据,每天都会将数据上传到 MySQL 服务器。我以前使用 KNIME 上传数据,因为它比使用 MySQL Workbench 上传快得多(select table -> "import data")。

一些信息:CSV 有 4000 行和 15 列。我在 R 中使用的库是 RMySQL。我在KNIME中使用的节点是database writer

library('RMySQL')

df=read.csv('C:/Users/my_user/Documents/file.csv', encoding = 'UTF-8', sep=';')

connection <- dbConnect(
    RMySQL::MySQL(),
    dbname = "db_name",
    host = "yyy.xxxxxxx.com",
    user = "vitor",
    password = "****"
)

dbWriteTable(connection, "table_name", df, append=TRUE, row.names=FALSE)

因此,为了进行测试,我使用相同的文件执行了完全相同的过程。在 KNIME 中用了 2 分钟,在 R 中只用了几秒钟。

一切都在幕后发生!数据上传到数据库取决于参数,例如数据库和工具之间的接口、网络连接、批量大小设置、可用于工具和工具数据处理速度本身的内存等等。在您的情况下,RMySQL 包默认使用 500 的批量大小,而 KNIME 仅使用 1,所以这可能就是差异的来源。尝试在 KNIME 中将其设置为 500,然后进行比较。不知道 MySQL Workbench 是如何工作的...