Convert data exports from various services to a single SQLite database

Overview

Bionic

Bionic is a tool to convert data exports from web apps to a single SQLite database. Bionic currently supports data exports from Google, Apple Health, Spotify, Telegram, RescueTime, Instagram, Twitter and Netflix.

Schema and demo data.

Example of bionic usage

Fun: you can use Bionic to explore your own data and discover insights about yourself. Join tables between different sources to create reports like "Songs I listen in different locations" or dive deep into a single source to create "How amount of Telegram messages per week with different people changed over time" report.

Research: if you research human behaviour, subjective metrics could heavily impact your findings. If your respondents are able to run Bionic and send you aggregated results from their data, you can collect new objectives datasets describing important parts of life: transportation, social media, knowledge work and others.

Development: you can use Bionic as a Go package to implement personal data import in your apps.

Education: you can include Bionic exercises in your articles, courses or books. Learning to process data on personal records is much more exciting than processing artificial datasets.

Install

Homebrew

brew install bionic-dev/tap/bionic

Update:

brew upgrade bionic-dev/tap/bionic

cURL

curl -L https://raw.githubusercontent.com/bionic-dev/bionic/main/install.sh | bash -s -- -b /usr/local/bin

Usage

Import data

Use the following syntax to convert downloaded data to a SQLite database:

bionic import [provider] [path to downloaded directory or an archive] --db [path to sqlite db]

If the database doesn't exist, Bionic will create a new one. If it already exists, Bionic will create tables if needed and append new rows.

Examples:

bionic import google /Users/seva/gdpr_exports/Takeout/ --db db.sqlite
bionic import health /Users/seva/gdpr_exports/apple-health.zip --db db.sqlite
bionic import spotify /Users/seva/gdpr_exports/MyData/ --db db.sqlite

Generate views

Bionic provides helper tables ("views") to make processing data easier.

For example, google_searches is a view based on original google_activity table, but filtered only to include search queries and altered to have the search query as a column.

To generate or update views run:

bionic views

Query

You can query the database with sqlite3 client:

$ sqlite3 db.sqlite                                               
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.

sqlite> select * from netflix_playback_related_events limit 1;
1|2021-01-22 20:46:21.696934+03:00|2021-01-22 20:46:21.696934+03:00||Seva|How I Met Your Mother: Season 1: "Come On"|Apple iPhone XR|RU|2020-12-30 20:14:21+00:00

Alternatively, you can use datasette to build a web UI to view and query data:

$ datasette serve db.sqlite
INFO:     Started server process [23975]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit)

datasette screenshot

You can also use Python and pandas to process data:

import pandas as pd
import sqlite3

DATABASE_PATH = '/Users/seva/db.sqlite'
db_connection = sqlite3.connect(DATABASE_PATH)

messages_df = pd.read_sql('select * from telegram_messages;', con=db_connection)

Providers

Name Export link Created tables Notes
Google: google https://takeout.google.com/ google_activity, google_activity_details, google_activity_location_infos, google_activity_path_points, google_activity_products, google_activity_products_assoc, google_activity_segments, google_activity_subtitles, google_activity_type_candidates, google_candidate_locations, google_location_activity, google_location_activity_type_candidates, google_location_history, google_place_path_points, google_place_visits, google_transit_stops, google_waypoints Only Activity and Location data is processed. You should specify the JSON format.
Apple Health: health Apple Health iOS app settings health_activity_summaries, health_beats_per_minutes, health_data_exports, health_devices, health_entries, health_entry_metadata, health_me_records, health_metadata_entries, health_workout_events, health_workout_metadata, health_workout_route_metadata, health_workout_route_track_points, health_workout_routes, health_workouts, health_activity_summaries, health_beats_per_minutes, health_data_exports, health_devices, health_entries, health_entry_metadata, health_me_records, health_metadata_entries, health_workout_events, health_workout_metadata, health_workout_route_metadata, health_workout_route_track_points, health_workout_routes, health_workouts
Instagram: instagram https://www.instagram.com/download/request/ - instagram_account_history, instagram_comment_hashtag_mentions, instagram_comment_user_mentions, instagram_comments, instagram_hashtags, instagram_likes, instagram_media, instagram_media_hashtag_mentions, instagram_media_user_mentions, instagram_profile_photos, instagram_registration_info, instagram_stories_activities, instagram_users
Netflix: netflix https://www.netflix.com/account/getmyinfo netflix_billing_history, netflix_clickstream, netflix_devices, netflix_indicated_preferences, netflix_interactive_titles, netflix_ip_addresses, netflix_my_list, netflix_playback_related_events, netflix_playtraces, netflix_ratings, netflix_search_history, netflix_subscription_history, netflix_viewing_activity
Spotify: spotify https://www.spotify.com/us/account/privacy/ spotify_streaming_history
Telegram: telegram Telegram Desktop app => Settings telegram_chats, telegram_members, telegram_messages, telegram_poll_answers, telegram_text_attachments
Twitter: twitter https://twitter.com/settings/download_your_data twitter_ad_impressions, twitter_ad_impressions_matched_targeting_criteria, twitter_advertisers, twitter_age_info_records, twitter_audience_and_advertiser_records, twitter_audience_and_advertisers, twitter_audience_and_lookalike_advertisers, twitter_conversations, twitter_device_infos, twitter_direct_message_reactions, twitter_direct_message_urls, twitter_direct_messages, twitter_email_address_changes, twitter_gender_info, twitter_hashtags, twitter_inferred_age_info_records, twitter_interest_records, twitter_language_records, twitter_likes, twitter_locations, twitter_login_ips, twitter_personalization_locations, twitter_personalization_records, twitter_personalization_shows, twitter_screen_name_changes, twitter_shows, twitter_targeting_criteria, twitter_tweet_entities, twitter_tweet_hashtags, twitter_tweet_media, twitter_tweet_urls, twitter_tweet_user_mentions, twitter_tweets, twitter_urls, twitter_users

As a package

Contributing

We appreciate contributions a lot! Here are some of the ways you can contribute:

  • Providers. You can create new sources of data. Check out #new-provider issues and an example PR with a new provider. Many existing providers lack some of the data: for example, the Google provider only proccesses a small subset of the Google export. Feel free to change it! We also target to test all providers and adding tests (especially, with unusual corner cases you found in your data) could be a very helpful contribution.
  • Views. Views are additional SQL tables based on data from providers. Check out an example PR with new views.
  • Docs.
  • Ecosystem. Create and release your own tools based on Bionic databases. Think a web UI to visualize life or a custom Spotify Year In Review report generator.

When contributing, feel free to create issues and discussions with any questions. We promise to be helpful and kind!

Issues
  • Netflix

    Netflix "Is Kids" column wrong data type

    Error while parsing Search History

    Error: record on line 0; parse error on line 18, column 4: strconv.ParseBool: parsing "-1": invalid syntax

    opened by shekhirin 2
  • Duplicate action indexes

    Duplicate action indexes

    2021/01/16 18:38:00 /Users/shekhirin/go/pkg/mod/gorm.io/driver/[email protected]/migrator.go:242 index idx_action already exists
    [0.014ms] [rows:0] CREATE UNIQUE INDEX `idx_action` ON `netflix_clickstream`(`profile_name`,`source`,`navigation_level`,`click_time`)
    

    IMAGE 2021-01-16 19:03:57

    opened by sevazhidkov 2
  • "belongs to" and "many2many" relations without FirstOrCreate are broken

    By default GORM won't find existing belongs to or many2many relations if inserting new object failed (because of unique constraint or other reason).

    Fix here: https://github.com/BionicTeam/bionic/blob/91c013cb18c6a6d823cff59970e19236f413d1b9/providers/twitter/tweets.go#L57

    Like done here: https://github.com/BionicTeam/bionic/pull/6/commits/a04a4924695ef8e1c902b425c8ac05a612e7262f#diff-12be6e08c97e807469561275e5a2952865d193b4b370da658551e1a7263287e9R209-R216

    opened by shekhirin 1
  • refactor: cobra commands

    refactor: cobra commands

    Major change: now not only bionic providers prints list of the providers available to import. but also bionic import when called without provider.

    Example:

    ➜ bionic (alexey/refactor-commands) ✗ ./build/bionic import
    Import data to local db
    
    Usage:
      bionic import [command]
    
    Available Commands:
      google      https://takeout.google.com/
      health      
      instagram   https://www.instagram.com/download/request/
      netflix     
      rescuetime  https://www.rescuetime.com/accounts/your-data => "Your Logged Time" => "Activity report history"
      spotify     
      telegram    Desktop App (https://desktop.telegram.org/ only): Settings => Advanced => Export Telegram data
      twitter     
    
    Flags:
      -h, --help   help for import
    
    Global Flags:
          --db string   db path
          --verbose     verbose output
    
    Use "bionic import [command] --help" for more information about a command.
    
    opened by shekhirin 0
  • golangci-lint timeout in GitHub Actions

    golangci-lint timeout in GitHub Actions

    run golangci-lint
      Running [/home/runner/golangci-lint-1.33.2-linux-amd64/golangci-lint run --out-format=github-actions] in [] ...
      level=error msg="Timeout exceeded: try increasing it by passing --timeout option"
      
      Error: golangci-lint exit with code 4
    
    opened by shekhirin 0
  • Add autocompletion

    Add autocompletion

    Now even simple bionic [command] completions doesn't work. Expected behaviour is something like

    $ bionic [tab][tab]
    generate-views import reset
    

    Also there might be command-specific completions such as providers list. For example:

    $ bionic import [tab][tab]
    facebook google instagram twitter
    
    enhancement 
    opened by shekhirin 0
  • CreatedAt isn't the same for all the models created within one transaction

    CreatedAt isn't the same for all the models created within one transaction

    Example: Row in imports table has 2021-01-16 19:11:37.105825+03:00 in created_at column, row in other table created within same transaction has 2021-01-16 19:11:36.976723+03:00 in created_at column.

    Need to somehow distinguish all rows related to same import. Either with same created_at within same transaction or other way.

    bug 
    opened by shekhirin 0
Releases(v0.0.4)
  • v0.0.3(Mar 31, 2021)

    Changelog

    93e7893 feat(exports, markdown): MVP & refactoring (#72) 8c0bf5c docs: fix generate views example command in readme 15e058c fix(google): missing place visit conditions & bad datetime format (#71) 10d1d38 refactor: cobra commands (#68) 0bb1810 docs: update readme 26f6e73 docs: update readme c898935 docs: add brew upgrade instructions to readme

    Source code(tar.gz)
    Source code(zip)
    bionic_0.0.3_Darwin_x86_64.tar.gz(4.58 MB)
    bionic_0.0.3_Linux_i386.tar.gz(3.83 MB)
    bionic_0.0.3_Linux_x86_64.tar.gz(4.02 MB)
    bionic_0.0.3_Windows_i386.tar.gz(8.42 MB)
    bionic_0.0.3_Windows_x86_64.tar.gz(8.59 MB)
    checksums.txt(496 bytes)
  • v0.0.2(Mar 3, 2021)

    Changelog

    5363980 feat(google-locations): new location data imports in google provider (#45) 55d68c6 feat(rescuetime): activity history (#65) 70b524f feat: add providers command (#64) e77463f feat: require db path flag (#62) 6e6679a chore: improve logging (#60) 5eabf2a chore, docs: add install.sh (#61) d012f66 docs: fix typo in readme bad7c01 docs: update readme 8c06e22 docs: update readme 95075e8 chore: delete idea run configurations 965014c docs: change readme image 45af571 docs: update readme a182acd docs: update readme bab1609 docs: fix typo e676de6 docs: add license and first readme version 74251e2 docs: add example image 7635932 feat(instagram): media (#52) cfe7fec feat(instagram): stories activities (#51) abe1745 refactor(instagram): unmarshallers gonna unmarshal (#53) 0f1087b chore(ci): change homebrew tap repo (#50) 4b271e7 chore(ci): goreleaser (#49) a6784e8 feat(instagram): comments (#44) 8762fff feat(instagram): likes (#42) 81f00fe feat(instagram): account history (#41) 1896baa chore: rename org & module (BionicTeam -> bionic-dev) (#48) 2004011 refactor(health): get rid of polymorphic assocs (#47) 3c1e3a2 refactor: rename Constraints() to Conditions() (#43) eaad840 feat: add type column to google activity table b691c57 Merge pull request #39 from BionicTeam/seva/spotify 526a6b3 fix review notes 4cfa5e9 fix(telegram): add date as datetime, not string (#40) a89679c Merge branch 'main' into seva/spotify f327a5a feat(spotify): streaming history eed339b feat(health): apple health provider (#34) abc930d refactor(netflix): use table prefixes for TableName() (#38) b71a39b chore(ci): test coverage (#37) 75ba9e7 chore: use ioutil.ReadAll insted of io.ReadAll, downgrade go version in ci test (#36) 8d71449 feat(telegram): add chats 21c9d2f fix review notes 39a1cc1 update golang version in ci 7ad8a71 feat(telegram): add chats fb29a7c Merge pull request #30 from BionicTeam/seva/fix-netflix-is-kids 3645fd4 fix review notes 9a825fb Merge pull request #29 from BionicTeam/seva/views-init 85fa8eb fix review note + linter 6784a26 Fix review notes + gofmt 7588671 refactor(twitter): use readJSON helper (#32) 78c676d feat(twitter): account and dependencies (#31) 932be70 fix: fix error on invalid bool value of iskids column in netflix search history export b5b44c1 fix: run gofmt project 763c05d update imports 4396b23 Merge branch 'main' into seva/views-init c4f7357 feat(views): interface, new cmd and google search view f80f4ee fix: move Migrate() call out of Reset's transaction (#28) fdc94c3 chore: rename go package to github.com/BionicTeam/bionic (#25) 6c0dfe2 chore: beautify go actions (#26) 2c69983 feat(twitter): ad impressions (#24) da00b07 chore(ci): github action for test (#21) 21af119 fix(twitter): table names and prefixes (#22) e5cb0d2 Merge pull request #9 from BionicTeam/seva/google-activity a17d3cb fix merge conflict typo b699608 Merge branch 'main' into seva/google-activity b3f47a4 fix review notes 158de0a feat(twitter): age info (#19) fdec5ac fix(twitter): use FirstOrCreate for correct assocs (#16) 1e07883 process both directories and archives for google zip a156bb6 don't panic if google actions file is not closed 202bc2c fix index names (#17); add .Migrate method to each provider; remove .Models 79f9f60 add name and prefix for google 3b87a30 Merge branch 'master' into seva/google-activity 5910f37 feat: add imports tracking & manager tests (#7) 02cca41 fix review notes c35e212 Merge pull request #8 from BionicTeam/seva/netflix-event-like-exports eed0cd2 check that file exists to handle .txt "data not found" files e881fbf remove redundant playtraces structure 9206de2 refactor(twitter): custom json unmarshallers for models (#15) 2403f34 feat(twitter): personalization (#6) 95c2e26 fix(twitter): denormalize arrays of indices into separate columns (#14) 4eee39f streaming json parsing f16405a chore: add golangci-lint github action (#12) c54a7b9 custom assoc table b1e7691 fix many2many column adds via firstorcreate 700bd17 move table name method closer to the playback event struct 6fe1827 WIP ccc4736 feat(netflix): add all event-like exports 91c013c feat: add import progress (#5) ee5de22 refactor(twitter): combine processing & model defs in one file (#4) 3d33d9c feat: make use of errgroup to process importFns in parallel (#3) c0f544f fix: migrate all models on providers manager creation 0429af7 Merge pull request #2 from shekhirin/seva/netflix-viewing-activity a099b51 remove redundant false assigment in netflix duration type a0a2b59 add .gitkeep to netflix data dir 59956f0 fix typo and use nullable int in netflix duration type af6c398 add unique index for netflix provider 2094979 add run configurations d3f92df review fixes 817d73f Add Netflix provider with first data type 3229b17 refactor: pass full inputPath to sub process funcs, better Models() e796a7e feat(twitter): tweets (#1) c97f097 fix: create db dir and file b9fa747 feat(twitter): direct messages 3e71574 add go build 9231743 initial commit

    Source code(tar.gz)
    Source code(zip)
    bionic_0.0.2_Darwin_x86_64.tar.gz(4.28 MB)
    bionic_0.0.2_Linux_i386.tar.gz(3.56 MB)
    bionic_0.0.2_Linux_x86_64.tar.gz(3.74 MB)
    bionic_0.0.2_Windows_i386.tar.gz(7.90 MB)
    bionic_0.0.2_Windows_x86_64.tar.gz(8.07 MB)
    checksums.txt(496 bytes)
  • v0.0.1(Feb 21, 2021)

    Changelog

    98e1569 change homebrew tap repo 4b271e7 chore(ci): goreleaser (#49) a6784e8 feat(instagram): comments (#44) 8762fff feat(instagram): likes (#42) 81f00fe feat(instagram): account history (#41) 1896baa chore: rename org & module (BionicTeam -> bionic-dev) (#48) 2004011 refactor(health): get rid of polymorphic assocs (#47) 3c1e3a2 refactor: rename Constraints() to Conditions() (#43) eaad840 feat: add type column to google activity table b691c57 Merge pull request #39 from BionicTeam/seva/spotify 526a6b3 fix review notes 4cfa5e9 fix(telegram): add date as datetime, not string (#40) a89679c Merge branch 'main' into seva/spotify f327a5a feat(spotify): streaming history eed339b feat(health): apple health provider (#34) abc930d refactor(netflix): use table prefixes for TableName() (#38) b71a39b chore(ci): test coverage (#37) 75ba9e7 chore: use ioutil.ReadAll insted of io.ReadAll, downgrade go version in ci test (#36) 8d71449 feat(telegram): add chats 21c9d2f fix review notes 39a1cc1 update golang version in ci 7ad8a71 feat(telegram): add chats fb29a7c Merge pull request #30 from BionicTeam/seva/fix-netflix-is-kids 3645fd4 fix review notes 9a825fb Merge pull request #29 from BionicTeam/seva/views-init 85fa8eb fix review note + linter 6784a26 Fix review notes + gofmt 7588671 refactor(twitter): use readJSON helper (#32) 78c676d feat(twitter): account and dependencies (#31) 932be70 fix: fix error on invalid bool value of iskids column in netflix search history export b5b44c1 fix: run gofmt project 763c05d update imports 4396b23 Merge branch 'main' into seva/views-init c4f7357 feat(views): interface, new cmd and google search view f80f4ee fix: move Migrate() call out of Reset's transaction (#28) fdc94c3 chore: rename go package to github.com/BionicTeam/bionic (#25) 6c0dfe2 chore: beautify go actions (#26) 2c69983 feat(twitter): ad impressions (#24) da00b07 chore(ci): github action for test (#21) 21af119 fix(twitter): table names and prefixes (#22) e5cb0d2 Merge pull request #9 from BionicTeam/seva/google-activity a17d3cb fix merge conflict typo b699608 Merge branch 'main' into seva/google-activity b3f47a4 fix review notes 158de0a feat(twitter): age info (#19) fdec5ac fix(twitter): use FirstOrCreate for correct assocs (#16) 1e07883 process both directories and archives for google zip a156bb6 don't panic if google actions file is not closed 202bc2c fix index names (#17); add .Migrate method to each provider; remove .Models 79f9f60 add name and prefix for google 3b87a30 Merge branch 'master' into seva/google-activity 5910f37 feat: add imports tracking & manager tests (#7) 02cca41 fix review notes c35e212 Merge pull request #8 from BionicTeam/seva/netflix-event-like-exports eed0cd2 check that file exists to handle .txt "data not found" files e881fbf remove redundant playtraces structure 9206de2 refactor(twitter): custom json unmarshallers for models (#15) 2403f34 feat(twitter): personalization (#6) 95c2e26 fix(twitter): denormalize arrays of indices into separate columns (#14) 4eee39f streaming json parsing f16405a chore: add golangci-lint github action (#12) c54a7b9 custom assoc table b1e7691 fix many2many column adds via firstorcreate 700bd17 move table name method closer to the playback event struct 6fe1827 WIP ccc4736 feat(netflix): add all event-like exports 91c013c feat: add import progress (#5) ee5de22 refactor(twitter): combine processing & model defs in one file (#4) 3d33d9c feat: make use of errgroup to process importFns in parallel (#3) c0f544f fix: migrate all models on providers manager creation 0429af7 Merge pull request #2 from shekhirin/seva/netflix-viewing-activity a099b51 remove redundant false assigment in netflix duration type a0a2b59 add .gitkeep to netflix data dir 59956f0 fix typo and use nullable int in netflix duration type af6c398 add unique index for netflix provider 2094979 add run configurations d3f92df review fixes 817d73f Add Netflix provider with first data type 3229b17 refactor: pass full inputPath to sub process funcs, better Models() e796a7e feat(twitter): tweets (#1) c97f097 fix: create db dir and file b9fa747 feat(twitter): direct messages 3e71574 add go build 9231743 initial commit

    Source code(tar.gz)
    Source code(zip)
    bionic_0.0.1_Darwin_x86_64.tar.gz(3.05 MB)
    bionic_0.0.1_Linux_i386.tar.gz(2.62 MB)
    bionic_0.0.1_Linux_x86_64.tar.gz(2.72 MB)
    bionic_0.0.1_Windows_i386.tar.gz(6.20 MB)
    bionic_0.0.1_Windows_x86_64.tar.gz(6.32 MB)
    checksums.txt(496 bytes)
Owner
Bionic
Bionic
Golang database driver for SQLite

go-sqlite Golang database driver for SQLite. Does not use cgo. This driver is based on pure-Go SQLite implementation (https://gitlab.com/cznic/sqlite)

glebarez 48 Jul 3, 2022
RecordLite: a library (and executable) that declaratively maintains SQLite tables and views of semi-structured data

RecordLite RecordLite is a library (and executable) that declaratively maintains

François Saint-Jacques 22 May 29, 2022
A minimal, single-table No-SQL database.

SimpleDB SimpleDB is a very basic No-SQL database format for long-term data storage in Golang. It is WIP, has a LOT of drawbacks, and definitely is no

Konnor Klashinsky 0 Jan 16, 2022
Pure Go SQLite file reader

Package SQLittle provides pure Go, read-only, access to SQLite (version 3) database files. What SQLittle reads SQLite3 tables and indexes. It iterates

Harmen 182 Jul 1, 2022
Low-level Go interface to SQLite 3

zombiezen.com/go/sqlite This package provides a low-level Go interface to SQLite 3. It is a fork of crawshaw.io/sqlite that uses modernc.org/sqlite, a

Ross Light 265 Jul 1, 2022
Streaming replication for SQLite.

Litestream Litestream is a standalone streaming replication tool for SQLite. It runs as a background process and safely replicates changes incremental

Ben Johnson 6.9k Jun 30, 2022
Go sqlite3 http vfs: query sqlite databases over http with range headers

sqlite3vfshttp: a Go sqlite VFS for querying databases over http(s) sqlite3vfshttp is a sqlite3 VFS for querying remote databases over http(s). This a

Peter Sanford 44 Jul 5, 2022
BQB is a lightweight and easy to use query builder that works with sqlite, mysql, mariadb, postgres, and others.

Basic Query Builder Why Simple, lightweight, and fast Supports any and all syntax by the nature of how it works Doesn't require learning special synta

Aaron M 37 Jun 11, 2022
Experimental implementation of a SQLite backend for go-mysql-server

go-mysql-sqlite-server This is an experimental implementation of a SQLite backend for go-mysql-server from DoltHub. The go-mysql-server is a "frontend

MergeStat 5 May 8, 2022
SQLite extension for accessing other SQL databases

dblite SQLite extension for accessing other SQL databases, in SQLite. Similar to how Postgres Foreign Data Wrappers enable access to other databases i

MergeStat 9 May 20, 2022
Tracking down a Memory Leak in Go/SQLite

Tracking down a Memory Leak in Go/SQLite run make test - WARNING: long running - several minutes on my workstation OSs supported: Windows_NT => memory

Stefan Thiel 1 Feb 28, 2022
Dbench - An unscientific benchmark of SQLite vs the file system (btrfs)

DBENCH Basic benchmarks for SQLite vs file system (btrfs on a 2020 Dell XPS SSD)

Chris Davies 38 May 20, 2022
Sqlair - SQLite Query Layer With Golang

sqlair SQLite Query Layer Creates an abstract over the go sql package to provide

Simon Richardson 1 Feb 18, 2022
Simple key-value store on top of SQLite or MySQL

KV Work in progress, not ready for prime time. A simple key/value store on top of SQLite or MySQL (Go port of GitHub's KV). Aims to be 100% compatible

Sergio Rubio 1 Mar 15, 2022
[mirror] the database client and tools for the Go vulnerability database

The Go Vulnerability Database golang.org/x/vulndb This repository is a prototype of the Go Vulnerability Database. Read the Draft Design. Neither the

Go 44 Jun 24, 2022
Database - Example project of database realization using drivers and models

database Golang based database realization Description Example project of databa

Denis 1 Feb 10, 2022
CLI tool that can execute SQL queries on CSV, LTSV, JSON and TBLN. Can output to various formats.

trdsql CLI tool that can execute SQL queries on CSV, LTSV, JSON and TBLN. It is a tool like q, textql and others. The difference from these tools is t

Noboru Saito 1.2k Jul 2, 2022
Single binary CLI for generating structured JSON, CSV, Excel, etc.

fakegen: Single binary CLI for generating a random schema of M columns to populate N rows of JSON, CSV, Excel, etc. This program generates a random sc

Multiprocess Labs LLC 44 Jun 22, 2022