# Doctor Data (beta) This is a beta version of this tool. Please submit any issues [here](https://github.com/sunnysidesounds/dr_data/issues) ```bash usage: dr-data [-h] [-transplant] [-source SOURCE] [-destination DESTINATION] [-inject] [-rows ROWS] [-biopsy] [-export EXPORT] [-cleanse] [-config CONFIG] Dr. Data is a database utility tool that can populate random data based on your schema or can import custom CSV data. See options below optional arguments: -h, --help show this help message and exit -transplant Insert one or all CSV files to table -source SOURCE Used in conjuctions with `transplant` The CSV source file or directory. if directory, csv filenames need to match table names -destination DESTINATION Used in conjuctions with `transplant` and `source`. if `source` is a file. destination TABLE is required -inject Inserts one or many randomly regenerated rows -rows ROWS Used in conjuction with `inject`.How may rows do you want to load per table in the database, default is set in configuration -biopsy Explicitly exports a schema and table insertion-order JSON files -export EXPORT Used in conjunction with `biopsy. The directory PATH to export the JSON files -cleanse Truncates all the values in the database, WARNING this will delete all data! -config CONFIG configuration file or set DRDATA_CONFIG= env variable ``` ## Prerequisite - python 3.9.1 - Works currently only with PostgreSQL 13+ ## Installation ```bash pip install dr-data ```` ## Usage 1. Create a `dr_data.json` file with these values and set `DRDATA_CONFIG=` env variable or using `-config=` parameter ```bash { "db":{ "host":"localhost", "database":"", "user":"", "password":"", "port":"5432" }, "defaults": { "rows": 25 } } ``` 2. Then run one of the procedure commands (-inject, -transplant, -cleanse, -biopsy) ## CLI Examples Example 1: `-inject` random row data into the database ```bash dr-data -inject # generates a default of 25 rows dr-data -inject -rows=100 ``` Example 2: `-transplant` directory with CSV files (multiple CSV files) Note: CSV columns need to be named the name as the database column names. ```bash dr-data -transplant -source=/path/to/source/directory ``` Example 3: `-transplant` one CSV files (single CSV file) Note: CSV columns need to be named the name as the database column names. ```bash dr-data -transplant -source= -destination= ``` Example 4: `-biopsy` the database, produces a schema.json and insertion-order-schema.json files ```bash dr-data -biopsy -export= ``` Example 5: `-cleanse` the database of all data. Warning: This can't be undone. ```bash dr-data -cleanse ``` ## SDK Examples Example 1: Using `Biopsy` class ```python from dr_data.biopsy import Biopsy configuration = {...} schema = Biopsy(configuration).execute_cmd() ``` Example 2: Using `Inject` class ```python from dr_data.biopsy import Biopsy from dr_data.inject import Inject configuration = {...} rows = 25 schema = Biopsy(configuration).execute_cmd() inject = Inject(schema, configuration) inject.execute_cmd(rows) ``` Example 3: Using `Transplant` class (file import) ```python from dr_data.transplant import Transplant configuration = {...} source_file = "/path/to/foobar.csv" destination_table = "foobar" transplant = Transplant(configuration) transplant.execute_file_cmd(source_file, destination_table) ``` Example 4: Using `Transplant` class (directory import) ```python from dr_data.transplant import Transplant configuration = {...} source_directory= "/path/to/foobar" transplant = Transplant(configuration) transplant.execute_directory_cmd(source_directory) ``` Example 5: Using `Randoms` class (optional usage) ```python from dr_data.randoms import Randoms random_hash = Randoms.get_hash(10) # get random hash value random_datetime = Randoms.get_datetime() # get random datetime random_datetime_with_timezone = Randoms.get_datetime_with_timezone() # get random datetime with timezone random_number = Randoms.get_datetime_with_timezone() # get random number random_boolean = Randoms.get_boolean() # get random boolean ``` # Development Setup ```bash git clone https://github.com/sunnysidesounds/dr_data cd dr_data python -m venv . venv/bin/pip install -e . venv/bin/dr-data -h ```