mysql - 将谷歌表格中的特定范围插入到 MYSQL
问题描述
我有一张简单的表格(从 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”
我的代码有什么问题?
解决方案
您引用了 ( ''
) 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();
参考:
推荐阅读
- reactjs - 反应 konva 在舞台上放大时保持一层固定
- c# - 使用反射将 XML 数组反序列化为列表
- ruby-on-rails - 无法使用 kubernets 部署 yam 文件的 command/args 部分向 kubernetes 中的 puma 提供配置文件
- jenkins - 如何在没有调用方法的情况下访问 vars/*.groovy Jenkins 库中的全局变量/函数?
- postgresql - 更新查询中的 LIMIT 1 更新所有行而不是只更新一个 postgres
- css - css - RShiny 小部件:如何为 radioButtons() 和 checkboxGroupInput() 着色?
- flutter - 如何根据颤动中的文本高度调整容器高度?
- bash - 为什么要使用 printf '%s\n' "message"?
- php - Select2 使用 Laravel 8 从数据库中多选选择项目
- c# - 使用 C# 压缩 S3 文件