将数据范围从 Google Sheets 插入到 MySQL

dbl*_*ack 2 mysql google-sheets google-apps-script

我正在尝试创建一个函数,该函数在我的 Google 电子表格中获取数据范围/指定范围,并将每一行不是空白的行插入到 MySQL 表中。我想在“Sheet One”中获取列范围 A:V 并将它们插入到“mysql_table”表中。我是使用 JDBC google 脚本的新手,下面是我到目前为止所想到的,但我无法使用我目前的知识来使用它。

function putData() {

   var conn = Jdbc.getConnection(dbUrl, user, userPwd);
  conn.setAutoCommit(false);

   var ss = SpreadsheetApp.getActiveSpreadsheet(),
      sheet = ss.getSheetByName("Sheet One"),
       range = sheet.getDataRange(),
      values = range.getValues(),
      row;

  var start = new Date();
 function writeManyRecords() { 
  for (var r=1; r<values.length; r++) {
    if( values[r].join('') === '' ) return 'Blank row encountered'; 

    row = values[r]; 
    var i = 0;
  var stmt = conn.prepareStatement('INSERT INTO mysql_table '
      + '(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21, field22) values (' + start + row[i] + ')');
   stmt.addBatch();



  var batch = stmt.executeBatch();
  conn.commit();
  conn.close();  


  var end = new Date();
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

有人对我如何实现这一目标有任何想法吗?

dbl*_*ack 6

我想出了一个解决方案,我把它张贴在这里,供其他任何寻找从 Google 表格写入 MySQL 的方式的人使用。这是一个简化版本:

function putData() {
  var conn = Jdbc.getConnection(dbUrl, user, userPwd);
  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 (test, num) VALUES ('" + data[i][0] + "'," + data[i][1] + ")";
  var count = stmt.executeUpdate(sql,1)
  }

  stmt.close();
  conn.close();
}
Run Code Online (Sandbox Code Playgroud)