33 lines
876 B
JavaScript
33 lines
876 B
JavaScript
|
/* Load SQLite3 connector library */
|
||
|
import { Database } from "bun:sqlite";
|
||
|
|
||
|
/* Load SheetJS library */
|
||
|
import * as XLSX from "xlsx";
|
||
|
import * as fs from "fs";
|
||
|
XLSX.set_fs(fs);
|
||
|
|
||
|
/* Initialize database */
|
||
|
var db = Database.open("chinook.db");
|
||
|
|
||
|
/* Create new workbook */
|
||
|
var wb = XLSX.utils.book_new();
|
||
|
|
||
|
/* Get list of table names */
|
||
|
var sql = db.prepare("SELECT name FROM sqlite_master WHERE type='table'");
|
||
|
var result = sql.all();
|
||
|
|
||
|
/* Loop across each name */
|
||
|
result.forEach(function(row) {
|
||
|
/* Get first 100K rows */
|
||
|
var aoo = db.prepare("SELECT * FROM '" + row.name + "' LIMIT 100000").all();
|
||
|
if(aoo.length > 0) {
|
||
|
/* Create Worksheet from the row objects */
|
||
|
var ws = XLSX.utils.json_to_sheet(aoo, {dense: true});
|
||
|
/* Add to Workbook */
|
||
|
XLSX.utils.book_append_sheet(wb, ws, row.name);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
/* Write File */
|
||
|
XLSX.writeFile(wb, "SheetJSQLiteBun.xlsx");
|