refs #5977 First commit

This commit is contained in:
Guillermo Bonet 2023-07-10 07:53:34 +02:00
commit a7dd647da4
5 changed files with 1204 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/node_modules
sqlite.db

33
README.md Normal file
View File

@ -0,0 +1,33 @@
# sqlite-analyzer
This code is a simple SQLite database analyzer that retrieves the names of all tables in a SQLite database file. It then iterates over each table and retrieves the count of columns for each table. If a table has more than 50000 columns, it logs the table name along with the column count to the console.
## Requeriments
* Git
* Nodejs
## Installation
Pull from repository.
```
$ git clone https://gitea.verdnatura.es/guillermo/sqlite-analyzer.git
```
Run this commands on project root directory to install Node dependencies.
```
$ npm install
```
Copy your database (example.db) into project folder with the name sqlite.db
## How to run
Execute this command in project path.
```
$ node main
```
## Built With
* [Git](https://git-scm.com/)
* [Nodejs](https://nodejs.org/)

49
main.js Normal file
View File

@ -0,0 +1,49 @@
const sqlite3 = require('sqlite3').verbose();
const sqliteFile = 'sqlite.db';
function getTables() {
return new Promise((resolve, reject) => {
const db = new sqlite3.Database(sqliteFile);
db.all("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name ASC", (err, tables) => {
if (err)
reject(err);
else
resolve(tables.map(r => r.name).sort((a, b) => a.localeCompare(b)));
});
db.close();
});
};
function getColumns(tableName) {
return new Promise((resolve, reject) => {
const db = new sqlite3.Database(sqliteFile);
db.all(`SELECT COUNT(*) NUM FROM ${tableName}`, (err, columns) => {
if (err)
reject(err);
else
resolve(columns[0].num);
});
db.close();
});
}
async function run() {
try {
const tables = await getTables();
for (const table of tables) {
const columns = await getColumns(table);
if (columns > 50000)
console.log(table + '.' + columns);
}
} catch (err) {
console.error(err);
}
}
run();

1115
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

5
package.json Normal file
View File

@ -0,0 +1,5 @@
{
"dependencies": {
"sqlite3": "^5.1.6"
}
}