将谷歌表格中的特定范围插入到 MYSQL

Posted

技术标签:

【中文标题】将谷歌表格中的特定范围插入到 MYSQL【英文标题】:Insert specific range in google sheets to MYSQL 【发布时间】:2019-09-08 17:35:57 【问题描述】:

我有一张简单的表格(从 A1 到 B9)

try1    try0
try3    try3
try5    try5
try7    try7
try9    try9
try11   try11
try13   try13
try15   try15
try17   try17

我正在使用脚本将记录插入到 mysql 表中。

function MysqlData() 
   var conn = Jdbc.getConnection('jdbc:mysql://mysite/myddb', 'user', 'pwd'); 
  var stmt = conn.createStatement();
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();

  for (var i = 0; i < data.length; i++) 
  var sql = "INSERT INTO test (field1, field2) VALUES ('" + data[i][0] + "'," + data[i][1] + ")";
  var count = stmt.executeUpdate(sql,1)
  

  stmt.close();
  conn.close();

在包含表格的页面上执行此脚本时,我收到错误:

“字段列表”中的未知列“try0”

我的代码有什么问题?

【问题讨论】:

【参考方案1】:

您引用了 ('') value1,但错过了 value2:

var sql = "INSERT INTO test (field1, field2) VALUES ('" + data[i][0] + "','" + data[i][1] + "')";

但是,直接发送字符串会使您面临 sql 注入。使用参数化语句:

  var sql = "INSERT INTO test (field1, field2) VALUES (?, ?)";
  var stmt = conn.prepareStatement(sql);
  for (var i = 0; i < data.length; i++) 
    stmt.setString(1, data[i][0]);
    stmt.setString(2, data[i][1]);
    stmt.addBatch();
  
  stmt.executeBatch();

参考资料:

Jdbc write sample

【讨论】:

以上是关于将谷歌表格中的特定范围插入到 MYSQL的主要内容,如果未能解决你的问题,请参考以下文章

将谷歌电子表格行值转换为不同工作表中的列

从日期范围计算特定月份的天数。谷歌表格

在谷歌电子表格中导入数据和颜色

将谷歌应用程序脚本移动到 v8 文件上传停止从侧边栏工作

将一个谷歌驱动器文件夹中的所有照片插入谷歌表格?

dart - 将谷歌日历插入到 Flutter 移动应用程序中