Seeder is a simple application that can be run from the console to populate tables with data.
A seeder application is used to insert data into tables. This application can register data defined in separate files into tables all at once. It can also insert a specified number of random data entries, which is useful for setting up test environments.
- This application is intended for use with PostgreSQL.
- Database connection information should be set in a .env file.
- The application is not distributed as a binary file, so you need to build it in your own environment.
In an environment with Rust installed, run the following command:
cargo build --release
Place the built executable file in the desired directory.
The built file will be generated at the following path:
./target/release/seeder
You need to configure database access information beforehand.
Follow these steps to set it up:
- Place a .env file in the same directory as the built seeder executable.
- Write the database access settings in the .env file in the following format:
DATABASE_URL=postgres://username:password@hostname:port/db_name
Tables must already be registered in the database.
For table registration, you may find migrate useful.
Include the registered table information in the database access settings in the .env file.
Here is the format for the .env file:
DATABASE_URL=postgres://username:password@hostname:port/db_name
The following commands are available. Detailed usage explanations are provided in separate sections.
# Insert data into tables from specified files
# file-path: Path to the file containing the data to be inserted
./seeder -f <file-path>
# Multiple files are also supported
./seeder -f <file-path1> <file-path2>
# Insert random data into tables
# file-path: Path to the file containing the column information of the target table
# n: Number of random data entries to generate
./seeder -r <file-path> <n>
# Generate a template for the JSON file used with both -f and -r options
# file-path: Path where the template file will be generated
./seeder -c <file-path>
Data insertion into tables is done using predefined data in JSON files.
There are two steps required:
- Preparing the file
- Executing the command
Define the data to be inserted in a JSON file.
A command to generate a template JSON file is also provided.
# Generate a template JSON file at the specified path
# file-path: Path where the template file will be generated
./seeder -c <file-path>
Fill in the necessary information in the generated template file.
Keep in mind the following:
- The available
data_type
values are:int
float
string
date
Here is an example of a JSON file definition:
{
"table_name": "computer_parts",
"table_columns": [
{
"data_type": "string",
"column_name": "name"
},
{
"data_type": "int",
"column_name": "lifespan"
}
],
"table_rows": [
[
"Ryzen 9 5900X",
5
]
]
}
Once you have prepared the definition file, execute the command.
You can also execute multiple files.
# file-path: Path to the file containing the data to be inserted
./seeder -f <file-path>
# Multiple files are also supported
./seeder -f <file-path1> <file-path2>
It is possible to insert multiple random data entries into tables, useful for testing purposes.
There are two steps required:
- Preparing the file
- Executing the command
Define the column information of the target table in a JSON file.
A command to generate a template JSON file is also provided.
# Generate a template JSON file at the specified path
# file-path: Path where the template file will be generated
./seeder -c <file-path>
Fill in the necessary column information in the generated template file.
Keep in mind the following:
- The available
data_type
values are:int
float
string
date
- Leave the "table_rows" field empty, as it will be used during execution.
Here is an example of a JSON file definition:
{
"table_name": "computer_parts",
"table_columns": [
{
"data_type": "string",
"column_name": "name"
},
{
"data_type": "int",
"column_name": "lifespan"
}
],
"table_rows": []
}
Once you have prepared the JSON file, execute the command.
Include the path to the file defining the column data and the number of random data entries to generate.
# file-path: Path to the file containing the column information of the target table
# n: Number of random data entries to generate
./seeder -r <file-path> <n>
This command generates template files required for running the seeder.
Run the following command, and then fill in the necessary information for either the -f or -r option.
# Generate a template JSON file at the specified path
# file-path: Path where the template file will be generated
./seeder -c <file-path>
If you need help with the commands, refer to the help options.
You can access the help with the following commands:
./seeder -h
# Or
./seeder --help