我可以创建一个批处理文件来运行SQL查询并将该输出发送到g-suites上的Google工作表文档吗?
到目前为止,我有这个:
@ECHO OFF
SET SQLCMD="C:\SQLDev\sqldeveloper\sqldeveloper\extensions"
SET PATH="C:\SQLDev\Audit"
SET SERVER="\PROD"
SET DB="PRODDB"
-i "C:\SQLDev\sqldeveloper\"
SET OUTPUT="C:\Audit.xls"
CD %PATH%
ECHO %date% %time% > %OUTPUT%
for %%f in (*.sql) do (
%SQLCMD% -S %SERVER% -d %DB% -i %%~f >> %OUTPUT%
PAUSE
我不太确定这是否可行,对正确方向的任何帮助将不胜感激。
根据您的代码,我了解您正在使用Oracle SQL。如果是这种情况,您可以使用Apps脚本的JDBC Connector连接到数据库,执行查询,然后将数据追加到工作表中。
此示例(从official documentation改编而成)如下所示:
/**
* Replace the variables in this block with real values.
* You can find the "Instance connection name" in the Google Cloud
* Platform Console, on the instance Overview page.
*/
var connectionName = 'Instance_connection_name';
var user = 'user_name';
var userPwd = 'user_password';
var db = 'database_name';
var dbUrl = 'jdbc:oracle:thin:@//' + connectionName + '/' + db;
function importData() {
var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);
var ss = SpreadsheetApp.create('Employees dump');
var sheet = ss.getSheets()[0];
// Insert sheet headers
sheet.appendRow(['Name', 'Age', 'Location']);
var stmt = conn.createStatement();
stmt.setMaxRows(1000);
var cursor = stmt.executeQuery('SELECT name, age, location FROM employees');
while (cursor.next()) {
var row = [cursor.getObject('name'),
cursor.getObject('age'),
cursor.getObject('location')];
sheet.appendRow(row);
}
results.close();
stmt.close();
}
在这种情况下,JDBC用于查询员工数据,并且同时使用SpreadsheetApp,Spreadsheet和Sheet类将该数据插入到Sheets文档中。
[如果需要,将服务器上的以下IP列入白名单以允许从脚本(从https://developers.google.com/apps-script/guides/jdbc开始访问)也很重要:
64.18.0.0/20
64.233.160.0/19
66.102.0.0/20
66.249.80.0/20
72.14.192.0/18
74.125.0.0/16
173.194.0.0/16
207.126.144.0/20
209.85.128.0/17
216.239.32.0/19