mysql - 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但真的不明白这应该如何在脚本中实现?(我计划将脚本设置为每隔一小时左右自动运行一次,以始终为我提供最新数据)。
解决方案
推荐阅读
- java - 如何在运行时更改属性文件和刷新配置类?
- java - Spring蛇案例和验证错误响应
- python - jupyder notebook: OSError: [Errno 2] "dot" not found in path
- sas - SAS PROC SQL - 如何将字符串转换为数字
- php - Ajax 无法使用 GET 向 php 发送数据
- amazon-web-services - 在 Glue 作业中创建 Glue 数据目录表
- entity-framework-core - 即使属性类型不可为空,是否可以将数据库列配置为允许 NULL?
- javascript - 如何在 JavaScript 中保存网站以供离线使用
- php - PHP:如何下载 gzip 压缩的内容?
- iccube - IcCube 架构加载速度优化