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)
有人对我如何实现这一目标有任何想法吗?
我想出了一个解决方案,我把它张贴在这里,供其他任何寻找从 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)