{"id":13412087,"url":"https://github.com/codingconcepts/dg","last_synced_at":"2025-12-27T04:54:06.588Z","repository":{"id":168261391,"uuid":"643931934","full_name":"codingconcepts/dg","owner":"codingconcepts","description":"A fast data generator that produces CSV files from generated relational data","archived":false,"fork":false,"pushed_at":"2024-08-21T01:50:06.000Z","size":2434,"stargazers_count":32,"open_issues_count":3,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-06T22:09:57.770Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codingconcepts.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-05-22T13:04:05.000Z","updated_at":"2024-11-15T19:40:11.000Z","dependencies_parsed_at":"2024-01-07T21:54:01.361Z","dependency_job_id":"ad6bd807-7289-4cf3-83c8-6c6c7e59cd46","html_url":"https://github.com/codingconcepts/dg","commit_stats":null,"previous_names":["codingconcepts/dg"],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingconcepts%2Fdg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingconcepts%2Fdg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingconcepts%2Fdg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingconcepts%2Fdg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codingconcepts","download_url":"https://codeload.github.com/codingconcepts/dg/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243618770,"owners_count":20320288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T20:01:20.862Z","updated_at":"2025-12-27T04:54:06.532Z","avatar_url":"https://github.com/codingconcepts.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/cover.png\" alt=\"drawing\" width=\"350\"/\u003e\n\u003c/p\u003e\n\nA fast data generator that produces CSV files from generated relational data.\n\n## Table of Contents\n\n1. [Installation](#installation)\n1. [Usage](#usage)\n   - Import via [HTTP](#import-via-http)\n   - Import via [psql](#import-via-psql)\n   - Import via [nodelocal](#import-via-nodelocal)\n1. [Tables](#tables)\n   - [gen](#gen)\n   - [set](#set)\n   - [inc](#inc)\n   - [ref](#ref)\n   - [each](#each)\n   - [range](#range)\n   - [match](#match)\n1. [Inputs](#inputs)\n   - [csv](#csv)\n1. [Functions](#functions)\n1. [Thanks](#thanks)\n1. [Todos](#todos)\n\n### Installation\n\nFind the release that matches your architecture on the [releases](https://github.com/codingconcepts/dg/releases) page.\n\nDownload the tar, extract the executable, and move it into your PATH:\n\n```\n$ tar -xvf dg_[VERSION]-rc1_macOS.tar.gz\n```\n\n### Usage\n\n```\n$ dg\nUsage dg:\n  -c string\n        the absolute or relative path to the config file\n  -cpuprofile string\n        write cpu profile to file\n  -i string\n        write import statements to file\n  -o string\n        the absolute or relative path to the output dir (default \".\")\n  -p int\n        port to serve files from (omit to generate without serving)\n  -version\n        display the current version number\n```\n\nCreate a config file. In the following example, we create 10,000 people, 50 events, 5 person types, and then populate the many-to-many `person_event` resolver table with 500,000 rows that represent the Cartesian product between the person and event tables:\n\n```yaml\ntables:\n  - name: person\n    count: 10000\n    columns:\n      # Generate a random UUID for each person\n      - name: id\n        type: gen\n        processor:\n          value: ${uuid}\n\n  - name: event\n    count: 50\n    columns:\n      # Generate a random UUID for each event\n      - name: id\n        type: gen\n        processor:\n          value: ${uuid}\n\n  - name: person_type\n    count: 5\n    columns:\n      # Generate a random UUID for each person_type\n      - name: id\n        type: gen\n        processor:\n          value: ${uuid}\n\n      # Generate a random 16 bit number and left-pad it to 5 digits\n      - name: name\n        type: gen\n        processor:\n          value: ${uint16}\n          format: \"%05d\"\n\n  - name: person_event\n    columns:\n      # Generate a random UUID for each person_event\n      - name: id\n        type: gen\n        processor:\n          value: ${uuid}\n\n      # Select a random id from the person_type table\n      - name: person_type\n        type: ref\n        processor:\n          table: person_type\n          column: id\n\n      # Generate a person_id column for each id in the person table\n      - name: person_id\n        type: each\n        processor:\n          table: person\n          column: id\n\n      # Generate an event_id column for each id in the event table\n      - name: event_id\n        type: each\n        processor:\n          table: event\n          column: id\n```\n\nRun the application:\n\n```\n$ dg -c your_config_file.yaml -o your_output_dir -p 3000\nloaded config file                       took: 428µs\ngenerated table: person                  took: 41ms\ngenerated table: event                   took: 159µs\ngenerated table: person_type             took: 42µs\ngenerated table: person_event            took: 1s\ngenerated all tables                     took: 1s\nwrote csv: person                        took: 1ms\nwrote csv: event                         took: 139µs\nwrote csv: person_type                   took: 110µs\nwrote csv: person_event                  took: 144ms\nwrote all csvs                           took: 145ms\n```\n\nThis will output and dg will then run an HTTP server allow you to import the files from localhost.\n\n```\nyour_output_dir\n├── event.csv\n├── person.csv\n├── person_event.csv\n└── person_type.csv\n```\n\n##### Import via HTTP\n\nThen import the files as you would any other; here's an example insert into CockroachDB:\n\n```sql\nIMPORT INTO \"person\" (\"id\")\nCSV DATA (\n    'http://localhost:3000/person.csv'\n)\nWITH skip='1', nullif = '', allow_quoted_null;\n\nIMPORT INTO \"event\" (\"id\")\nCSV DATA (\n    'http://localhost:3000/event.csv'\n)\nWITH skip='1', nullif = '', allow_quoted_null;\n\nIMPORT INTO \"person_type\" (\"id\", \"name\")\nCSV DATA (\n    'http://localhost:3000/person_type.csv'\n)\nWITH skip='1', nullif = '', allow_quoted_null;\n\nIMPORT INTO \"person_event\" (\"person_id\", \"event_id\", \"id\", \"person_type\")\nCSV DATA (\n    'http://localhost:3000/person_event.csv'\n)\nWITH skip='1', nullif = '', allow_quoted_null;\n```\n\n##### Import via psql\n\nIf you're working with a remote database and have access to the `psql` binary, try importing the CSV file as follows:\n\n```sh\npsql \"postgres://root@localhost:26257/defaultdb?sslmode=disable\" \\\n-c \"\\COPY public.person (id, full_name, date_of_birth, user_type, favourite_animal) FROM './csvs/person/person.csv' WITH DELIMITER ',' CSV HEADER NULL E''\"\n```\n\n##### Import via nodelocal\n\nIf you're working with a remote database and have access to the `cockroach` binary, try importing the CSV file as follows:\n\n```sh\ncockroach nodelocal upload ./csvs/person/person.csv imports/person.csv \\\n  --url \"postgres://root@localhost:26257?sslmode=disable\"\n```\n\nThen importing the file as follows:\n\n```sql\nIMPORT INTO person (\"id\", \"full_name\", \"date_of_birth\", \"user_type\", \"favourite_animal\")\n  CSV DATA (\n    'nodelocal://1/imports/person.csv'\n  ) WITH skip = '1';\n```\n\n### Tables\n\nTable elements instruct dg to generate data for a single table and output it as a csv file. Here are the configuration options for a table:\n\n```yaml\ntables:\n  - name: person\n    unique_columns: [col_a, col_b]\n    count: 10\n    columns: ...\n```\n\nThis config generates 10 random rows for the person table. Here's a breakdown of the fields:\n\n| Field Name     | Optional | Description                                                                                                                  |\n| -------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- |\n| name           | No       | Name of the table. Must be unique.                                                                                           |\n| unique_columns | Yes      | Removes duplicates from the table based on the column names provided                                                         |\n| count          | Yes      | If provided, will determine the number of rows created. If not provided, will be calculated by the current table size.       |\n| suppress       | Yes      | If `true` the table won't be written to a CSV. Useful when you need to generate intermediate tables to combine data locally. |\n| columns        | No       | A collection of columns to generate for the table.                                                                           |\n\n#### Processors\n\ndg takes its configuration from a config file that is parsed in the form of an object containing arrays of objects; `tables` and `inputs`. Each object in the `tables` array represents a CSV file to be generated for a named table and contains a collection of columns to generate data for.\n\n##### gen\n\nGenerate a random value for the column. Here's an example:\n\n```yaml\n- name: sku\n  type: gen\n  processor:\n    value: SKU${uint16}\n    format: \"%05d\"\n```\n\nThis configuration will generate a random left-padded `uint16` with a prefix of \"SKU\" for a column called \"sku\". `value` contains zero or more function placeholders that can be used to generate data. A list of available functions can be found [here](https://github.com/codingconcepts/dg#functions).\n\nGenerate a pattern-based value for the column. Here's an example:\n\n```yaml\n- name: phone\n  type: gen\n  processor:\n    pattern: \\d{3}-\\d{3}-\\d{4}\n```\n\nThis configuration will generate US-format phone number, like 123-456-7890.\n\n##### const\n\nProvide a constant set of values for a column. Here's an example:\n\n```yaml\n- name: options\n  type: const\n  processor:\n    values: [bed_breakfast, bed]\n```\n\nThis configuration will create a column containing two rows.\n\n##### set\n\nSelect a value from a given set. Here's an example:\n\n```yaml\n- name: user_type\n  type: set\n  processor:\n    values: [admin, regular, read-only]\n```\n\nThis configuration will select between the values \"admin\", \"regular\", and \"read-only\"; each with an equal probability of being selected.\n\nItems in a set can also be given a weight, which will affect their likelihood of being selected. Here's an example:\n\n```yaml\n- name: favourite_animal\n  type: set\n  processor:\n    values: [rabbit, dog, cat]\n    weights: [10, 60, 30]\n```\n\nThis configuration will select between the values \"rabbit\", \"dog\", and \"cat\"; each with different probabilities of being selected. Rabbits will be selected approximately 10% of the time, dogs 60%, and cats 30%. The total value doesn't have to be 100, however, you can use whichever numbers make most sense to you.\n\n##### inc\n\nGenerates an incrementing number. Here's an example:\n\n```yaml\n- name: id\n  type: inc\n  processor:\n    start: 1\n    format: \"P%03d\"\n```\n\nThis configuration will generate left-padded ids starting from 1, and format them with a prefix of \"P\".\n\n##### ref\n\nReferences a value from a previously generated table. Here's an example:\n\n```yaml\n- name: ptype\n  type: ref\n  processor:\n    table: person_type\n    column: id\n```\n\nThis configuration will choose a random id from the person_type table and create a `ptype` column to store the values.\n\nUse the `ref` type if you need to reference another table but don't need to generate a new row for _every_ instance of the referenced column.\n\n##### each\n\nCreates a row for each value in another table. If multiple `each` columns are provided, a Cartesian product of both columns will be generated.\n\nHere's an example of one `each` column:\n\n```yaml\n- name: person\n  count: 3\n  columns:\n    - name: id\n      type: gen\n      processor:\n        value: ${uuid}\n\n# person\n#\n# id\n# c40819f8-2c76-44dd-8c44-5eef6a0f2695\n# 58f42be2-6cc9-4a8c-b702-c72ab1decfea\n# ccbc2244-667b-4bb5-a5cd-a1e9626a90f9\n\n- name: pet\n  columns:\n    - name: person_id\n      type: each\n      processor:\n        table: person\n        column: id\n    - name: name\n      type: gen\n      processor:\n        value: first_name\n# pet\n#\n# person_id                            name\n# c40819f8-2c76-44dd-8c44-5eef6a0f2695 Carlo\n# 58f42be2-6cc9-4a8c-b702-c72ab1decfea Armando\n# ccbc2244-667b-4bb5-a5cd-a1e9626a90f9 Kailey\n```\n\nHere's an example of two `each` columns:\n\n```yaml\n- name: person\n  count: 3\n  columns:\n    - name: id\n      type: gen\n      processor:\n        value: ${uuid}\n\n# person\n#\n# id\n# c40819f8-2c76-44dd-8c44-5eef6a0f2695\n# 58f42be2-6cc9-4a8c-b702-c72ab1decfea\n# ccbc2244-667b-4bb5-a5cd-a1e9626a90f9\n\n- name: event\n  count: 3\n  columns:\n    - name: id\n      type: gen\n      processor:\n        value: ${uuid}\n\n# event\n#\n# id\n# 39faeb54-67d1-46db-a38b-825b41bfe919\n# 7be981a9-679b-432a-8a0f-4a0267170c68\n# 9954f321-8040-4cd7-96e6-248d03ee9266\n\n- name: person_event\n  columns:\n    - name: person_id\n      type: each\n      processor:\n        table: person\n        column: id\n    - name: event_id\n      type: each\n      processor:\n        table: event\n        column: id\n# person_event\n#\n# person_id\n# c40819f8-2c76-44dd-8c44-5eef6a0f2695 39faeb54-67d1-46db-a38b-825b41bfe919\n# c40819f8-2c76-44dd-8c44-5eef6a0f2695 7be981a9-679b-432a-8a0f-4a0267170c68\n# c40819f8-2c76-44dd-8c44-5eef6a0f2695 9954f321-8040-4cd7-96e6-248d03ee9266\n# 58f42be2-6cc9-4a8c-b702-c72ab1decfea 39faeb54-67d1-46db-a38b-825b41bfe919\n# 58f42be2-6cc9-4a8c-b702-c72ab1decfea 7be981a9-679b-432a-8a0f-4a0267170c68\n# 58f42be2-6cc9-4a8c-b702-c72ab1decfea 9954f321-8040-4cd7-96e6-248d03ee9266\n# ccbc2244-667b-4bb5-a5cd-a1e9626a90f9 39faeb54-67d1-46db-a38b-825b41bfe919\n# ccbc2244-667b-4bb5-a5cd-a1e9626a90f9 7be981a9-679b-432a-8a0f-4a0267170c68\n# ccbc2244-667b-4bb5-a5cd-a1e9626a90f9 9954f321-8040-4cd7-96e6-248d03ee9266\n```\n\nUse the `each` type if you need to reference another table and need to generate a new row for _every_ instance of the referenced column.\n\n##### range\n\nGenerates data within a given range. Note that a number of factors determine how this generator will behave. The step (and hence, number of rows) will be generated in the following priority order:\n\n1. If an `each` generator is being used, step will be derived from that\n1. If a `count` is provided, step will be derived from that\n1. Otherwise, `step` will be used\n\nHere's an example that generates monotonically increasing ids for a table, starting from 1:\n\n```yaml\n- name: users\n  count: 10000\n  columns:\n    - name: id\n      type: range\n      processor:\n        type: int\n        from: 1\n        step: 1\n```\n\nHere's an example that generates all dates between `2020-01-01` and `2023-01-01` at daily intervals:\n\n```yaml\n- name: event\n  columns:\n    - name: date\n      type: range\n      processor:\n        type: date\n        from: 2020-01-01\n        to: 2023-01-01\n        step: 24h\n        format: 2006-01-02\n```\n\nHere's an example that generates 10 dates between `2020-01-01` and `2023-01-02`:\n\n```yaml\n- name: event\n  count: 10\n  columns:\n    - name: date\n      type: range\n      processor:\n        type: date\n        from: 2020-01-01\n        to: 2023-01-01\n        format: 2006-01-02\n        step: 24h # Ignored due to table count.\n```\n\nHere's an example that generates 20 dates (one for every row found from an `each` generator) between `2020-01-01` and `2023-01-02`:\n\n```yaml\n- name: person\n  count: 20\n  columns:\n    - name: id\n      type: gen\n      processor:\n        value: ${uuid}\n\n- name: event\n  count: 10 # Ignored due to resulting count from \"each\" generator.\n  columns:\n    - name: person_id\n      type: each\n      processor:\n        table: person\n        column: id\n\n    - name: date\n      type: range\n      processor:\n        type: date\n        from: 2020-01-01\n        to: 2023-01-01\n        format: 2006-01-02\n```\n\nThe range generate currently supports the following data types:\n\n- `date` - Generate dates between a from and to value\n- `int` - Generate integers between a from and to value\n\n##### match\n\nGenerates data by matching data in another table. In this example, we'll assume there's a CSV file for the `significant_event` input that generates the following table:\n\n| date       | event |\n| ---------- | ----- |\n| 2023-01-10 | abc   |\n| 2023-01-11 |       |\n| 2023-01-12 | def   |\n\n```yaml\ninputs:\n  - name: significant_event\n    type: csv\n    source:\n      file_name: significant_dates.csv\n\ntables:\n  - name: events\n    columns:\n      - name: timeline_date\n        type: range\n        processor:\n          type: date\n          from: 2023-01-09\n          to: 2023-01-13\n          format: 2006-01-02\n          step: 24h\n      - name: timeline_event\n        type: match\n        processor:\n          source_table: significant_event\n          source_column: date\n          source_value: events\n          match_column: timeline_date\n```\n\ndg will match rows in the significant_event table with rows in the events table based on the match between `significant_event.date` and `events.timeline_date`, and take the value from the `significant_events.event` column where there's a match (otherwise leaving `NULL`). This will result in the following `events` table being generated:\n\n| timeline_date | timeline_event |\n| ------------- | -------------- |\n| 2023-01-09    |                |\n| 2023-01-10    | abc            |\n| 2023-01-11    |                |\n| 2023-01-12    | def            |\n| 2023-01-13    |                |\n\n### Inputs\n\ndg takes its configuration from a config file that is parsed in the form of an object containing arrays of objects; `tables` and `inputs`. Each object in the `inputs` array represents a data source from which a table can be created. Tables created via inputs will not result in output CSVs.\n\n##### csv\n\nReads in a CSV file as a table that can be referenced from other tables. Here's an example:\n\n```yaml\n- name: significant_event\n  type: csv\n  source:\n    file_name: significant_dates.csv\n```\n\nThis configuration will read from a file called significant_dates.csv and create a table from its contents. Note that the `file_name` should be relative to the config directory, so if your CSV file is in the same directory as your config file, just include the file name.\n\n### Functions\n\n| Name                           | Type      | Example                                                                                                   |\n| ------------------------------ | --------- | --------------------------------------------------------------------------------------------------------- |\n| ${ach_account}                 | string    | 586981797546                                                                                              |\n| ${ach_routing}                 | string    | 441478502                                                                                                 |\n| ${adjective_demonstrative}     | string    | there                                                                                                     |\n| ${adjective_descriptive}       | string    | eager                                                                                                     |\n| ${adjective_indefinite}        | string    | several                                                                                                   |\n| ${adjective_interrogative}     | string    | whose                                                                                                     |\n| ${adjective_possessive}        | string    | her                                                                                                       |\n| ${adjective_proper}            | string    | Iraqi                                                                                                     |\n| ${adjective_quantitative}      | string    | sufficient                                                                                                |\n| ${adjective}                   | string    | double                                                                                                    |\n| ${adverb_degree}               | string    | far                                                                                                       |\n| ${adverb_frequency_definite}   | string    | daily                                                                                                     |\n| ${adverb_frequency_indefinite} | string    | always                                                                                                    |\n| ${adverb_manner}               | string    | unexpectedly                                                                                              |\n| ${adverb_place}                | string    | here                                                                                                      |\n| ${adverb_time_definite}        | string    | yesterday                                                                                                 |\n| ${adverb_time_indefinite}      | string    | just                                                                                                      |\n| ${adverb}                      | string    | far                                                                                                       |\n| ${animal_type}                 | string    | mammals                                                                                                   |\n| ${animal}                      | string    | ape                                                                                                       |\n| ${app_author}                  | string    | RedLaser                                                                                                  |\n| ${app_name}                    | string    | SlateBlueweek                                                                                             |\n| ${app_version}                 | string    | 3.2.10                                                                                                    |\n| ${bitcoin_address}             | string    | 16YmZ5ol5aXKjilZT2c2nIeHpbq                                                                               |\n| ${bitcoin_private_key}         | string    | 5JzwyfrpHRoiA59Y1Pd9yLq52cQrAXxSNK4QrGrRUxkak5Howhe                                                       |\n| ${bool}                        | bool      | true                                                                                                      |\n| ${breakfast}                   | string    | Awesome orange chocolate muffins                                                                          |\n| ${bs}                          | string    | leading-edge                                                                                              |\n| ${car_fuel_type}               | string    | LPG                                                                                                       |\n| ${car_maker}                   | string    | Seat                                                                                                      |\n| ${car_model}                   | string    | Camry Solara Convertible                                                                                  |\n| ${car_transmission_type}       | string    | Manual                                                                                                    |\n| ${car_type}                    | string    | Passenger car mini                                                                                        |\n| ${chrome_user_agent}           | string    | Mozilla/5.0 (X11; Linux i686) AppleWebKit/5310 (KHTML, like Gecko) Chrome/37.0.882.0 Mobile Safari/5310   |\n| ${city}                        | string    | Memphis                                                                                                   |\n| ${color}                       | string    | DarkBlue                                                                                                  |\n| ${company_suffix}              | string    | LLC                                                                                                       |\n| ${company}                     | string    | PlanetEcosystems                                                                                          |\n| ${connective_casual}           | string    | an effect of                                                                                              |\n| ${connective_complaint}        | string    | i.e.                                                                                                      |\n| ${connective_examplify}        | string    | for example                                                                                               |\n| ${connective_listing}          | string    | next                                                                                                      |\n| ${connective_time}             | string    | soon                                                                                                      |\n| ${connective}                  | string    | for instance                                                                                              |\n| ${country_abr}                 | string    | VU                                                                                                        |\n| ${country}                     | string    | Eswatini                                                                                                  |\n| ${credit_card_cvv}             | string    | 315                                                                                                       |\n| ${credit_card_exp}             | string    | 06/28                                                                                                     |\n| ${credit_card_type}            | string    | Mastercard                                                                                                |\n| ${currency_long}               | string    | Mozambique Metical                                                                                        |\n| ${currency_short}              | string    | SCR                                                                                                       |\n| ${date}                        | time.Time | 2005-01-25 22:17:55.371781952 +0000 UTC                                                                   |\n| ${day}                         | int       | 27                                                                                                        |\n| ${dessert}                     | string    | Chocolate coconut dream bars                                                                              |\n| ${dinner}                      | string    | Creole potato salad                                                                                       |\n| ${domain_name}                 | string    | centralb2c.net                                                                                            |\n| ${domain_suffix}               | string    | com                                                                                                       |\n| ${email}                       | string    | ethanlebsack@lynch.name                                                                                   |\n| ${emoji}                       | string    | ♻️                                                                                                        |\n| ${file_extension}              | string    | csv                                                                                                       |\n| ${file_mime_type}              | string    | image/vasa                                                                                                |\n| ${firefox_user_agent}          | string    | Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/1951-07-21 Firefox/37.0                                     |\n| ${first_name}                  | string    | Kailee                                                                                                    |\n| ${flipacoin}                   | string    | Tails                                                                                                     |\n| ${float32}                     | float32   | 2.7906555e+38                                                                                             |\n| ${float64}                     | float64   | 4.314310154193861e+307                                                                                    |\n| ${fruit}                       | string    | Eggplant                                                                                                  |\n| ${gender}                      | string    | female                                                                                                    |\n| ${hexcolor}                    | string    | #6daf06                                                                                                   |\n| ${hobby}                       | string    | Bowling                                                                                                   |\n| ${hour}                        | int       | 18                                                                                                        |\n| ${http_method}                 | string    | DELETE                                                                                                    |\n| ${http_status_code_simple}     | int       | 404                                                                                                       |\n| ${http_status_code}            | int       | 503                                                                                                       |\n| ${http_version}                | string    | HTTP/1.1                                                                                                  |\n| ${int16}                       | int16     | 18940                                                                                                     |\n| ${int32}                       | int32     | 2129368442                                                                                                |\n| ${int64}                       | int64     | 5051946056392951363                                                                                       |\n| ${int8}                        | int8      | 110                                                                                                       |\n| ${ipv4_address}                | string    | 191.131.155.85                                                                                            |\n| ${ipv6_address}                | string    | 1642:94b:52d8:3a4e:38bc:4d87:846e:9c83                                                                    |\n| ${job_descriptor}              | string    | Senior                                                                                                    |\n| ${job_level}                   | string    | Identity                                                                                                  |\n| ${job_title}                   | string    | Executive                                                                                                 |\n| ${language_abbreviation}       | string    | kn                                                                                                        |\n| ${language}                    | string    | Bengali                                                                                                   |\n| ${last_name}                   | string    | Friesen                                                                                                   |\n| ${latitude}                    | float64   | 45.919913                                                                                                 |\n| ${longitude}                   | float64   | -110.313125                                                                                               |\n| ${lunch}                       | string    | Sweet and sour pork balls                                                                                 |\n| ${mac_address}                 | string    | bd:e8:ce:66:da:5b                                                                                         |\n| ${minute}                      | int       | 23                                                                                                        |\n| ${month_string}                | string    | April                                                                                                     |\n| ${month}                       | int       | 10                                                                                                        |\n| ${name_prefix}                 | string    | Ms.                                                                                                       |\n| ${name_suffix}                 | string    | I                                                                                                         |\n| ${name}                        | string    | Paxton Schumm                                                                                             |\n| ${nanosecond}                  | int       | 349669923                                                                                                 |\n| ${nicecolors}                  | []string  | [#490a3d #bd1550 #e97f02 #f8ca00 #8a9b0f]                                                                 |\n| ${noun_abstract}               | string    | timing                                                                                                    |\n| ${noun_collective_animal}      | string    | brace                                                                                                     |\n| ${noun_collective_people}      | string    | mob                                                                                                       |\n| ${noun_collective_thing}       | string    | orchard                                                                                                   |\n| ${noun_common}                 | string    | problem                                                                                                   |\n| ${noun_concrete}               | string    | town                                                                                                      |\n| ${noun_countable}              | string    | cat                                                                                                       |\n| ${noun_uncountable}            | string    | wisdom                                                                                                    |\n| ${noun}                        | string    | case                                                                                                      |\n| ${opera_user_agent}            | string    | Opera/10.10 (Windows NT 5.01; en-US) Presto/2.11.165 Version/13.00                                        |\n| ${password}                    | string    | 1k0vWN 9Z                                                                                                 | 4f={B YPRda4ys. |\n| ${pet_name}                    | string    | Bernadette                                                                                                |\n| ${phone_formatted}             | string    | (476)455-2253                                                                                             |\n| ${phone}                       | string    | 2692528685                                                                                                |\n| ${phrase}                      | string    | I'm straight                                                                                              |\n| ${preposition_compound}        | string    | ahead of                                                                                                  |\n| ${preposition_double}          | string    | next to                                                                                                   |\n| ${preposition_simple}          | string    | at                                                                                                        |\n| ${preposition}                 | string    | outside of                                                                                                |\n| ${programming_language}        | string    | PL/SQL                                                                                                    |\n| ${pronoun_demonstrative}       | string    | those                                                                                                     |\n| ${pronoun_interrogative}       | string    | whom                                                                                                      |\n| ${pronoun_object}              | string    | us                                                                                                        |\n| ${pronoun_personal}            | string    | I                                                                                                         |\n| ${pronoun_possessive}          | string    | mine                                                                                                      |\n| ${pronoun_reflective}          | string    | yourself                                                                                                  |\n| ${pronoun_relative}            | string    | whom                                                                                                      |\n| ${pronoun}                     | string    | those                                                                                                     |\n| ${quote}                       | string    | \"Raw denim tilde cronut mlkshk photo booth kickstarter.\" - Gunnar Rice                                    |\n| ${rgbcolor}                    | []int     | [152 74 172]                                                                                              |\n| ${safari_user_agent}           | string    | Mozilla/5.0 (Windows; U; Windows 95) AppleWebKit/536.41.5 (KHTML, like Gecko) Version/5.2 Safari/536.41.5 |\n| ${safecolor}                   | string    | gray                                                                                                      |\n| ${second}                      | int       | 58                                                                                                        |\n| ${snack}                       | string    | Crispy fried chicken spring rolls                                                                         |\n| ${ssn}                         | string    | 783135577                                                                                                 |\n| ${state_abr}                   | string    | AL                                                                                                        |\n| ${state}                       | string    | Kentucky                                                                                                  |\n| ${street_name}                 | string    | Way                                                                                                       |\n| ${street_number}               | string    | 6234                                                                                                      |\n| ${street_prefix}               | string    | Port                                                                                                      |\n| ${street_suffix}               | string    | stad                                                                                                      |\n| ${street}                      | string    | 11083 Lake Fall mouth                                                                                     |\n| ${time_zone_abv}               | string    | ADT                                                                                                       |\n| ${time_zone_full}              | string    | (UTC-02:00) Coordinated Universal Time-02                                                                 |\n| ${time_zone_offset}            | float32   | 3                                                                                                         |\n| ${time_zone_region}            | string    | Asia/Aqtau                                                                                                |\n| ${time_zone}                   | string    | Mountain Standard Time (Mexico)                                                                           |\n| ${uint128_hex}                 | string    | 0xcd50930d5bc0f2e8fa36205e3d7bd7b2                                                                        |\n| ${uint16_hex}                  | string    | 0x7c80                                                                                                    |\n| ${uint16}                      | uint16    | 25076                                                                                                     |\n| ${uint256_hex}                 | string    | 0x61334b8c51fa841bf9a3f1f0ac3750cd1b51ca2046b0fb75627ac73001f0c5aa                                        |\n| ${uint32_hex}                  | string    | 0xfe208664                                                                                                |\n| ${uint32}                      | uint32    | 783098878                                                                                                 |\n| ${uint64_hex}                  | string    | 0xc8b91dc44e631956                                                                                        |\n| ${uint64}                      | uint64    | 5722659847801560283                                                                                       |\n| ${uint8_hex}                   | string    | 0x65                                                                                                      |\n| ${uint8}                       | uint8     | 192                                                                                                       |\n| ${url}                         | string    | https://www.leadcutting-edge.net/productize                                                               |\n| ${user_agent}                  | string    | Opera/10.64 (Windows NT 5.2; en-US) Presto/2.13.295 Version/10.00                                         |\n| ${username}                    | string    | Gutmann2845                                                                                               |\n| ${uuid}                        | string    | e6e34ff4-1def-41e5-9afb-f697a51c0359                                                                      |\n| ${vegetable}                   | string    | Tomato                                                                                                    |\n| ${verb_action}                 | string    | knit                                                                                                      |\n| ${verb_helping}                | string    | did                                                                                                       |\n| ${verb_linking}                | string    | has                                                                                                       |\n| ${verb}                        | string    | be                                                                                                        |\n| ${weekday}                     | string    | Tuesday                                                                                                   |\n| ${word}                        | string    | month                                                                                                     |\n| ${year}                        | int       | 1962                                                                                                      |\n| ${zip}                         | string    | 45618                                                                                                     |\n\n### Building releases locally\n\n```\n$ VERSION=0.1.0 make release\n```\n\n### Thanks\n\nThanks to the maintainers of the following fantastic packages, whose code this tools makes use of:\n\n- [samber/lo](https://github.com/samber/lo)\n- [brianvoe/gofakeit](https://github.com/brianvoe/gofakeit)\n- [go-yaml/yaml](https://github.com/go-yaml/yaml)\n- [stretchr/testify](github.com/stretchr/testify/assert)\n\n### Todos\n\n- Improve code coverage\n- Write file after generating, then only keep columns that other tables need\n- Support for range without a table count (e.g. the following results in zero rows unless a count is provided)\n\n```yaml\n- name: bet_types\n  count: 3\n  columns:\n    - name: id\n      type: range\n      processor:\n        type: int\n        from: 1\n        step: 1\n    - name: description\n      type: const\n      processor:\n        values: [Win, Lose, Draw]\n```\n","funding_links":[],"categories":["数据库","Database","Data Integration Frameworks"],"sub_categories":["数据库工具","Database Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingconcepts%2Fdg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodingconcepts%2Fdg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingconcepts%2Fdg/lists"}