gpt4 book ai didi

mysql - 使用 Google Apps 脚本将空值从表格插入 Mysql 数据库

转载 作者:行者123 更新时间:2023-11-29 09:26:37 24 4
gpt4 key购买 nike

我目前正在使用 Google Apps 脚本开发数据提取插件。主要思想是应用程序的用户可以将数据从工作表插入到数据库中。为此,我使用应用程序脚本提供的 JDBC API

我当前遇到的问题是,当我从空的工作表中读取单元格时,应用程序脚本使用未定义的类型,因此在插入时产生错误。我怎么能做这样的事呢?

我当前的插入功能:

function putData(row, tableName) {
var connectionName = '****';
var user = '****';
var userPwd = '*****';
var db = '******';

var dbUrl = 'jdbc:google:mysql://' + connectionName + '/' + db;
var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);

var stmt = conn.createStatement();
var data = row
var query = "INSERT INTO "+ db + '.' + tableName +" VALUES (" ;
var i = 0

//The following loop is just to build the query from the rows taken from the sheet
// if the value is a String I add quotation marks
for each (item in row){
if ((typeof item) == 'string'){
if (i == row.length-1){
query += "'" + item + "'";
} else {
query += "'" + item + "',";
}
}else {
if (i == row.length-1){
query += item;
} else {
query += item + ",";
}
}
i++
}
query += ")"
results = stmt.executeUpdate(query)
stmt.close();
conn.close();
}

当我在某些情况下尝试插入单词“NULL”时,我认为它是一个字符串,并在其他字段上引发错误。

最佳答案

当尝试从电子表格(更准确地说是从单元格)获取数据时,该值将自动解析为以下类型之一:Number , Boolean , DateString

根据Google getValues() documentation :

The values may be of type Number, Boolean, Date, or String, depending on the value of the cell. Empty cells are represented by an empty string in the array.

本质上,undefined类型可能是您传递row的方式中存在的问题。参数(例如,尝试访问超出范围的单元格)。

如果您想解决问题,您应该添加 if for each (item in row) { 之后的声明行:

if (typeof item == 'undefined')
item = null;

if语句检查 row 是否内容类型为undefined如果是这样,它会自动将其解析为 null 。这样,内容的类型将是 null您应该能够将其插入数据库。

建议的实际操作方式是使用 JDBC Prepared Statements ,它们基本上是预编译的 SQL 语句,使您可以更轻松地插入必要的数据。更准确地说,您不必像在上面提供的代码中那样手动准备插入数据。它们也是更安全的方式,使您的数据不易受到各种攻击。

此外,for each...in语句已被弃用,您应该考虑使用其他内容,例如 for循环或 while环形。

此外,我建议您查看这些链接,因为它们可能会有所帮助:

  1. Class JdbcPreparedStatement ;

  2. Class Range Apps Script - getValues() .

关于mysql - 使用 Google Apps 脚本将空值从表格插入 Mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59505870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com