mysql - 如何通过 JDBC 高效地将批处理请求发送到 Google App Script 中的 MySQL 数据库?

标签 mysql google-apps-script google-app-maker

我正在 Google App Maker 中构建一个应用程序,该应用程序接收用户输入的 Excel CSV 文件,该文件包含 3 列和 370,573 行,因此总共有 1,111,719 个数据值。我试图通过发送批处理请求将这些数据有效地输入到 MySQL 数据库中。但是,我不确定如何正确优化此过程以最大程度地减少所需时间。 这就是我目前完成该过程的方式:

var file = DriveApp.getFileById(fileID);
var data = Utilities.parseCsv(file.getBlob().getDataAsString());
var stmt = conn.prepareStatement('INSERT INTO report '
   + '(createdDate, accountFullID, lsid) values (?, ?, ?)');
for(var i = 1; i < **data.length**; i++) {
   stmt.setString(1, data[i][0]);
   stmt.setString(2, data[i][1]);
   stmt.setString(3, data[i][2]); 
   stmt.addBatch();
}
var batch = stmt.executeBatch();
conn.commit();
conn.close();

在测试我的代码时,当我将 for 循环设置为迭代直到变量 i 小于 500 时,需要超过 3 分钟才能完成。当我将值设置为较小的数字(如 5)时,需要几秒钟才能完成完全的。当我将该值设置为 data.length(因为它当前设置为粗体)时,它从未完成并因死锁异常而超时。我应该如何编辑我的代码,以便更有效地执行批处理并减少从 Excel CSV 文件输入所有数据条目(而不仅仅是电子表格的一小部分)时所花费的总时间?

最佳答案

如果这是一次性导入,我会使用应用程序制造商的原生导入功能。创建一个与您的 cvs 文档结构相匹配的数据模型。然后在谷歌表格中打开 csv。确保格式与数据模型匹配,并且字段和列名完全匹配,然后使用应用程序制造商屏幕左上角的导入功能。选择谷歌工作表和您创建的数据模型,然后单击导入。这应该让你的数据加载它仍然需要一些时间,因为 1M 项目很多。我看到这是 10 个月大的,所以当时可能还没有。

https://developers.google.com/appmaker/models/import-export

关于mysql - 如何通过 JDBC 高效地将批处理请求发送到 Google App Script 中的 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51033320/

相关文章:

google-apps-script - 如何使用文件上传修改 Google 表单响应

javascript - 是否可以在 Google Apps 表格脚本的 copyTo 命令中使用变量?

google-app-maker - 如何将我的电子表格链接到 App Maker?

javascript - 寻找有关 App Maker 的教育 Material

javascript - MailApp指定邮箱发件人

php - 如何以数据表格式显示 JSON?

php - 连接表 Yii 2 - MariaDB 异常

mysql - 如何在 mysql 中为大量用户创建消息系统而无需花费太多时间?

php - 如何从本地机器导出存储过程并导入到服务器?

javascript - 从应用程序脚本附加菜单打开一个新窗口