Stellen Sie eine Verbindung zur Datenbank her und rufen Sie Daten in die Google-Tabelle ab

7

Ich habe mich eine Weile darüber gewundert. Wir verwenden Google Spreadsheets häufig mit meinen Kollegen und müssen immer Daten aufschreiben, die wir bereits in unserer MySQL-Datenbank haben.

Ich frage mich, ob es eine Möglichkeit gibt, Ihre Tabelle mit dem MySQL-Server zu verbinden und die Daten über ein ausführbares Skript oder ähnliches in bestimmte Zeilen abzurufen.

Jan Richter
quelle

Antworten:

5

Sie können die JDBC-Dienste von Google Apps Scripts verwenden .

Sie müssen ein Skript schreiben, das Ihre Tabelle mit Daten aus dem JDBC-Dienst füllt.

Sie wissen nicht genau, was Sie tun möchten, aber Sie können mit dem Beispiel aus der Dokumentation beginnen:

function foo() {
  var conn = Jdbc.getConnection('jdbc:mysql://<host>:3306/<instance>', 'user', 'password');
  var stmt = conn.createStatement();
  stmt.setMaxRows(100);
  var start = new Date();
  var rs = stmt.executeQuery('select * from person');

  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var cell = doc.getRange('a1');
  var row = 0;
  while (rs.next()) {
    for (var col = 0; col < rs.getMetaData().getColumnCount(); col++) {
      cell.offset(row, col).setValue(rs.getString(col + 1));
    }
    row++;
  }
  rs.close();
  stmt.close();
  conn.close();
  var end = new Date();
  Logger.log('Time elapsed: ' + (end.getTime() - start.getTime()));
}
Vidar S. Ramdal
quelle
Wie geht das mit integrierter Authentifizierung?
FMFF
1

Verwenden Sie das Google AppScript JDBC

Hier ist ein Beispielcode, mit dem Sie loslegen können.

 // Replace the variables in this block with real values.
    var address = 'Your DB Address Here';
    var user = 'Enter USER';
    var userPwd = 'YOUR 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();
      // Read up to 1000 rows of data from the table and log them.
      // stmt.setMaxRows(1000);
      var results = stmt.executeQuery('SELECT * FROM YOURTABLE');

      var sheet = SpreadsheetApp.getActiveSpreadsheet();
      var cell = sheet.getRange('A1');
      var numCols = results.getMetaData().getColumnCount();
      var row =0;

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

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

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

Mit SeekWell können Sie eine Verbindung zu Datenbanken herstellen und SQL-Abfragen direkt in Sheets schreiben. MySQL ist in der kostenlosen Ebene enthalten:

Einige andere Funktionen:

  • Zeigen Sie schnell alle Tabellen und Spalten in einer Datenbank an und erhalten Sie mit einem Klick Zusammenfassungsstatistiken für eine Spalte
  • Abfrage über die Seitenleiste, ein großes 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 „Ausführungsblatt“ speichern, um mehrere Berichte gleichzeitig zu aktualisieren

Haftungsausschluss: Ich habe das gemacht.

howMuchCheeseIsTooMuchCheese
quelle
0
select * from table_name
into outfile '/somelocation/data.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Starten Sie die Google-Tabelle. Öffnen Sie die Datei data.csv. Ihre Daten werden zur Verwendung in Google importiert.

Oder möchten Sie eine Echtzeitverbindung?

Cybernard
quelle
Nun, eine Echtzeitverbindung wäre besser, aber ich bin mir nicht sicher, ob es möglich ist.
Ich habe es nicht mit Google Docs gemacht, aber ich habe es mit Google Kalender gemacht. Wenn Sie einen Webserver mit PHP betreiben, ist dies möglicherweise möglich. Laden Sie die API herunter und holen Sie sich die Entwickler-ID von Google und vielen anderen Dingen.