首页 > 解决方案 > Google Apps 脚本 - 使用 JDKB 导入 MySQL 数据不适用于日期 0000-00-00

问题描述

我正在将我的 Joomla 网页上的表单与 Google 表格进行集成。

我正在使用 Google Apps 脚本从 mySQL 数据库导入数据。

我正在使用此脚本从我的在线表单中导入数据:

var server = 'SERVER';
var port = PORT;
var dbName = 'DATABASE';
var username = 'USERNAME';
var password = 'PASSWORD';
var url = 'jdbc:mysql://'+server+':'+port+'/'+dbName;

function readData() {
  var conn = Jdbc.getConnection(url, username, password);
  var stmt = conn.createStatement();
  var results = stmt.executeQuery('SELECT * FROM XXXX_facileforms_records');
  var metaData=results.getMetaData();
  var numCols = metaData.getColumnCount();
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getSheetByName('Import Bug Reports');
  sheet.clearContents();
  var arr=[];
  for (var col = 0; col < numCols; col++) {
    arr.push(metaData.getColumnName(col + 1));
  }
  sheet.appendRow(arr);
while (results.next()) {
  arr=[];
  for (var col = 0; col < numCols; col++) {
    console.log (col+1)
    if (results.getString(col + 1)==0||'0000-00-00 00:00:00') continue // java.sql.Timestamp == '0000-00-00 00:00:00'
    else {arr.push(results.getString(col + 1));
    console.log (col+1)}
  }
  sheet.appendRow(arr);
}
results.close();
stmt.close();
}

我收到错误:异常:值 '0000-00-00 00:00:00' 不能表示为 java.sql.Timestamp

我不得不承认我对 SQL 的了解非常有限,所以我尝试了一种解决方法,脚本只是跳过受影响的值(我很确定它们与我需要的用户表单输入无关)。

但是,continue语句似乎没有按预期工作。任何人都知道如何解决这个错误?

我看过这个问题:Google Apps Script, JDBC and MySQL does not work with Date 0000-00-00但真的不明白这应该如何在脚本中实现?(我计划将脚本设置为每隔一小时左右自动运行一次,以始终为我提供最新数据)。

标签: mysqldatedatetimegoogle-apps-scriptjdbc

解决方案


推荐阅读