it-swarm.com.de

So verbinden Sie Google Sheets mit der Datenbank

Ich versuche, einige Rohdaten auf einem Blatt in meiner Google Sheets-Datei automatisch mit einer Abfrage auszufüllen.

Es sieht nicht so aus, als hätte Sheets eine eingebaute Funktionalität wie Microsoft Excel.

Fehlt mir etwas? Ich habe ein Add-On gefunden, das inzwischen eingestellt wurde und nicht mehr überall als Daten bezeichnet wird: https://www.dataeverywhere.com/use-database-sheets

Gibt es noch etwas, das das ersetzt hat?

6
obizues

Wie hier bezeichnet, können Sie die JDBC-Dienste von Google Apps Scripts verwenden. Sie müssen ein Skript schreiben, das Ihre Tabelle mit Daten aus dem JDBC-Dienst auffüllt.

Aus der Datenbank lesen

In diesem Beispiel wird veranschaulicht, wie eine große Anzahl von Datensätzen aus der Datenbank gelesen wird, und die Ergebnismenge bei Bedarf durchlaufen wird.

// Replace the variables in this block with real values.
var address = 'database_IP_address';
var user = 'user_name';
var userPwd = 'user_password';
var db = 'database_name';

var dbUrl = 'jdbc:mysql://' + address + '/' + db;

// Read up to 1000 rows of data from the table and log them.
function readFromTable() {
  var conn = Jdbc.getConnection(dbUrl, user, userPwd);

  var start = new Date();
  var stmt = conn.createStatement();
  stmt.setMaxRows(1000);
  var results = stmt.executeQuery('SELECT * FROM entries');
  var numCols = results.getMetaData().getColumnCount();

  while (results.next()) {
    var rowString = '';
    for (var col = 0; col < numCols; col++) {
      rowString += results.getString(col + 1) + '\t';
    }
    Logger.log(rowString)
  }

  results.close();
  stmt.close();

  var end = new Date();
  Logger.log('Time elapsed: %sms', end - start);
}

Hoffe das hilft!

6
abielita

Wenn Sie nicht Ihre eigene Lösung rollen möchten, überprüfen Sie SeekWell . Sie können damit eine Verbindung zu Datenbanken herstellen und SQL-Abfragen direkt in Sheets schreiben.

Einige andere Funktionen:

  • Zeigen Sie schnell alle Tabellen und Spalten in einer Datenbank an und erhalten Sie mit einem Klick Übersichtsstatistiken für eine Spalte
  • Abfrage aus der Seitenleiste, einem großen Popup-Fenster oder aus einer Zelle heraus. Die Ergebnisse können an eine bestimmte Zelle, ein Arbeitsblatt oder direkt an eine Pivot-Tabelle gesendet werden
  • Ihr Abfrageverlauf wird gespeichert und kann angezeigt werden, wenn Sie eine ältere Abfrage erneut ausführen müssen
  • Sie können eine Reihe von Abfragen auf einem "Arbeitsblatt" speichern, um mehrere Berichte gleichzeitig zu aktualisieren

Haftungsausschluss: Ich habe das gemacht.

"Database Browser" ist eine gebrauchsfertige Lösung, die als Add-On im GSuite Marketplace verfügbar ist. - um eine Verbindung zu Datenbanken herzustellen und die Datenbank (mit dem Query Builder) abzufragen und die Ergebnisse direkt in das Google-Datenblatt zu laden.

Dieses Add-On enthält auch die Liste der Verbindungen und Abfragen, so dass eine erneute Ausführung praktisch ist. Wenn Sie nach einem alternativen Add-On suchen, das Sie erwähnt haben, ist Database Browser eine gute Wahl.

2
Jasperin

Dies ist der Beispielcode zum Lesen von Daten aus einer SQL Server-Instanz und zum Einfügen in Google Sheet. Der Code erstellt ein Menüelement, um Daten erneut zu laden, und löscht den Inhalt jedes Mal, während das Format beibehalten wird.

function onOpen() {

var spreadsheet = SpreadsheetApp.getActive();

var menuItems = [
    {name: 'Get Data', functionName: 'readData'}
];
spreadsheet.addMenu('My Functions', menuItems);
}


// Replace the variables in this block with real values.
var address = 'ip-address:port'; //ex. '10.1.1.1:1433'
var user = 'db-username';
var userPwd = 'db-password';
var db = 'db-name';

var dbUrl = 'jdbc:sqlserver://' + address + ';databaseName=' + db;


function readData() {
 var conn = Jdbc.getConnection(dbUrl, user, userPwd);


 var stmt = conn.createStatement();

 var results = stmt.executeQuery('SELECT * FROM [dbo].[User]');
 var metaData=results.getMetaData();
 var numCols = metaData.getColumnCount();

 var sheet = SpreadsheetApp.getActiveSheet();



 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++) {

   arr.Push(results.getString(col + 1));
  }
 sheet.appendRow(arr);

}

results.close();
stmt.close();

sheet.autoResizeColumns(1, numCols+1);


}
1
Mojtaba

Dieser Code funktioniert gut: Sie können eine Verbindung zur Azure-Datenbank herstellen und Daten aus der Tabelle abrufen

function onOpen() {

var spreadsheet = SpreadsheetApp.getActive();

var menuItems = [
    {name: 'Get Data', functionName: 'readData'}
];
        spreadsheet.addMenu('Report', menuItems);
}


// Replace the variables in this block with your values.
 var hostName = 'SERVER.database.windows.net:1433;'
 var db = 'DBNAME;';
 var user = '[email protected]';
 var userPwd = 'PASSWORD';



 var dbUrl = 'jdbc:sqlserver://'+hostName + 'databaseName='+db; 


function readData() {
 var conn = Jdbc.getConnection(dbUrl, user, userPwd);
 var stmt = conn.createStatement();

  
 // Place your query below
 var results = stmt.executeQuery('SELECT TOP (10) * FROM [dbo].[NAME]');
 var metaData=results.getMetaData();
 var numCols = metaData.getColumnCount();
 var sheet = SpreadsheetApp.getActiveSheet();

 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++) {

   arr.Push(results.getString(col + 1));
  }
 sheet.appendRow(arr);

}

results.close();
stmt.close();

sheet.autoResizeColumns(1, numCols+1);

}
0
Dmitri