Skip to content

RangamRKSS/dbpush

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation


██████╗ ██████╗ ██████╗ ██╗   ██╗███████╗██╗  ██╗
██╔══██╗██╔══██╗██╔══██╗██║   ██║██╔════╝██║  ██║
██║  ██║██████╔╝██████╔╝██║   ██║███████╗███████║
██║  ██║██╔══██╗██╔═══╝ ██║   ██║╚════██║██╔══██║
██████╔╝██████╔╝██║     ╚██████╔╝███████║██║  ██║
╚═════╝ ╚═════╝ ╚═╝      ╚═════╝ ╚══════╝╚═╝  ╚═╝

Import .csv and .xlsx files directly into PostgreSQL and MySQL

— from your terminal or Python code.


PyPI version Python License: MIT PostgreSQL MySQL



What is DBSHEET?

DBSHEET is a zero-boilerplate CLI and Python utility that turns spreadsheet files into live database tables. No schema writing. No manual column mapping. No encoding headaches.

Point it at a file. Configure the database. Done. how to use cli tool.

python -m dbpush.cli

SHow all commands SHow all commands Editing file inside tool config db

The Old Way vs DBSHEET

Without DBSHEET With DBSHEET
Open spreadsheet pip install dbpush==1.0.0
Write a custom parser dbpush (or 3 lines of Python)
Map columns manually ✅ Auto schema from headers
Write SQL CREATE TABLE ✅ Table created automatically
Write INSERT loops ✅ Rows inserted + upserted
Debug encoding issues ✅ Just works

Features

✦ CSV import                ✦ Excel (.xlsx) import
✦ PostgreSQL support        ✦ MySQL support
✦ Auto table creation       ✦ Header-based schema generation
✦ Upsert on duplicate keys  ✦ Interactive CLI
✦ Python API                ✦ Config file support

Installation

pip install dbpush

Quick Start

Config File

Create a config.txt file:

db_type:postgres
host:localhost
port:5432
user:postgres
password:secret
database:mydb
file_name:./data.csv
sheet_name:Sheet1
db_type:mysql
host:localhost
port:3306
user:root
password:secret
database:mydb
file_name:./data.csv
sheet_name:Sheet1

CLI

Launch the interactive terminal:

dbsheet

Typical workflow:

config_file      # load your config
connect          # connect to the database
create_table     # create table from spreadsheet headers
insert           # insert all rows
select           # view the data

Python API

from dbpush.dbpush import Dbpush

db = Dbpush.create(
    db_type="postgres",
    host="localhost",
    user="postgres",
    password="secret",
    database="mydb",
    port=5432,
    file_name="./data.csv"
)

db.connect()
db.create_table()
db.insert()
db.select_all()

Supported Formats

File Type Supported
.csv ✅ Yes
.xlsx ✅ Yes

Supported Databases

Database Supported
PostgreSQL ✅ Yes
MySQL ✅ Yes

Example Input

CSV:

id,name,age,salary
1,ram,22,50000
2,radha,25,70000

DBSHEET will:

  • Create a table named data
  • Map each header to a column (id → primary key, rest → text)
  • Insert all rows automatically
  • Upsert if a row with the same primary key already exists

CLI Commands

Command Description
config Configure database connection manually
config_file Load configuration from a file
connect Connect to the database
create_db Create the database if it doesn't exist
create_table Create a table from the spreadsheet headers
insert Insert (or upsert) all rows from the file
select Display all rows from the table
truncate Remove all rows from the table (keep structure)
drop_table Permanently delete the table
row_count Print the number of rows in the spreadsheet
col_count Print the number of columns in the spreadsheet
header Display column names from the spreadsheet
sheet Display the active sheet name
find Search for a row by column value

Python API Reference

Dbpush.create(...)

Factory method to create a new Dbsheet instance.

db = Dbpush.create(
    db_type="postgres",   # "postgres" or "mysql"
    host="localhost",
    user="postgres",
    password="secret",
    database="mydb",
    port=5432,
    file_name="./data.csv",
    sheet_name="Sheet1"   # optional, for .xlsx files
)

create_db()

Creates the database if it does not already exist.

db.create_db()

connect()

Establishes a connection to the database and prepares the cursor.

db.connect()

create_table()

Reads the spreadsheet headers and creates a matching SQL table.

  • The id column is set as the primary key
  • All other columns are created as text fields
db.create_table()

insert()

Reads all rows from the spreadsheet and inserts them into the table.

Handles duplicate primary keys via upsert — existing rows are updated, new rows are inserted.

db.insert()

select_all()

Prints all rows currently in the table.

db.select_all()

drop_table()

Permanently deletes the table from the database.

db.drop_table()

truncate_table()

Removes all rows from the table while keeping the table structure intact.

db.truncate_table()

row_count()

Prints the total number of data rows in the spreadsheet (excluding the header).

db.row_count()

col_count()

Prints the total number of columns in the spreadsheet.

db.col_count()

show_header()

Prints the list of column names from the spreadsheet header row.

db.show_header()

show_sheet()

Prints the name of the active sheet (relevant for .xlsx files).

db.show_sheet()

find(column, value)

Searches through the spreadsheet rows and returns rows where column matches value.

db.find("name", "ram")
# Returns all rows where the "name" column equals "ram"

Full Examples

PostgreSQL

from dbpush.dbpush import Dbpush

db = Dbpush.create(
    db_type="postgres",
    host="localhost",
    user="postgres",
    password="secret",
    database="mydb",
    port=5432,
    file_name="./data.csv"
)

db.connect()
db.create_table()
db.insert()
db.select_all()

MySQL

from dbpush.dbpush import Dbpush

db = Dbpush.create(
    db_type="mysql",
    host="localhost",
    user="root",
    password="secret",
    database="mydb",
    port=3306,
    file_name="./data.xlsx",
    sheet_name="Sheet1"
)

db.connect()
db.create_table()
db.insert()
db.select_all()

Use Cases

  • 🌱 Seeding development and staging databases
  • 🛠 Internal admin tools and dashboards
  • ⚡ Rapid prototyping with real data
  • 📦 Importing spreadsheets from clients
  • 🔄 Lightweight ETL pipelines
  • 📊 Data migration scripts

Project Structure

dbsheet-public/
├── README.md
├── examples/
│   ├── postgres_example.py
│   └── mysql_example.py
├── screenshots/
│   ├── cli.png
│   └── demo.gif
└── roadmap.md

Roadmap

  • Better type inference (int, float, date detection)
  • Connection URI support (postgresql://user:pass@host/db)
  • Batch folder import (import entire directory of files)
  • Improved error messages and validation
  • Export database table → CSV
  • SQLite support

See roadmap.md for full details.


License

MIT © Sarthak sachdeva


If dbpush saved you time, a ⭐ on the repo means a lot.

Built with ♥ by Sarthak sachdeva

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors