yuniql alternatives and similar packages
Based on the "Deployment" category.
Alternatively, view yuniql alternatives based on common mentions on social networks and blogs.
-
DbUp
.NET library that helps you to deploy changes to SQL Server databases. It tracks which SQL scripts have been run already, and runs the change scripts that are needed to get your database up to date -
Octo Pack
Used to build nuget packages of your application for deployment using tools such as Octopus Deploy
Pixel-Perfect Multi-Platform Applications with C# and XAML
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of yuniql or a related project?
Popular Comparisons
README
yuniql

yuniql (yuu-nee-kel). Free and open source schema versioning and database migration engine made natively with .NET Core. Use plain SQL scripts, bulk import CSV, integrate CI/CD pipelines, zero runtime dependencies and works with windows and linux. Supports SqlServer, PostgreSql, MySql, and MariaDB.
<!--
Inspired by Evolutionary Database Design by Martin Fowler and Pramod Sadalage. -->
Working with CLI
Manage local db versions and run database migrations from your CLI tool. Perform local migration run or verify with uncommitted runs to test your scripts. Install yuniql CLI with Chocolatey or use alternative ways listed here https://yuniql.io/docs/install-yuniql
choco install yuniql --version=1.0.1
Run migrations for SQL Server
docker run -d -e "ACCEPT_EULA=Y" -e "[email protected]!" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest
SETX YUNIQL_CONNECTION_STRING "Server=localhost,1400;Database=yuniqldb;User Id=SA;[email protected]!"
git clone https://github.com/rdagumampan/yuniql.git c:\temp\yuniql-cli
cd c:\temp\yuniql-cli\samples\basic-sqlserver-sample
yuniql run -a
yuniql list
Running yuniql v1.0.1 for windows-x64
Copyright 2019 (C) Rodel E. Dagumampan. Apache License v2.0
Visit https://yuniql.io for documentation & more samples
+---------------+----------------------+------------+---------------+---------------------+
| SchemaVersion | AppliedOnUtc | Status | AppliedByUser | AppliedByTool |
+---------------+----------------------+------------+---------------+---------------------+
| v0.00 | 2020-07-02 21:45:13Z | Successful | sa | yuniql-cli v1.0.1.0 |
+---------------+----------------------+------------+---------------+---------------------+
Run migrations for PostgreSql, MySql and others
docker run -d -e POSTGRES_USER=sa -e [email protected]! -e POSTGRES_DB=yuniqldb -p 5432:5432 postgres
SETX YUNIQL_CONNECTION_STRING "Host=localhost;Port=5432;Username=sa;[email protected]!;Database=yuniqldb"
git clone https://github.com/rdagumampan/yuniql.git c:\temp\yuniql-cli
cd c:\temp\yuniql-cli\samples\basic-postgresql-sample
yuniql run -a --platform postgresql
yuniql list --platform postgresql
Working with Azure DevOps Pipelines Tasks
Run your database migration from Azure DevOps Pipelines. The tasks downloads package and cache it for later execution just like how Use .NET Core
or Use Node
tasks works. Find Yuniql on Azure DevOps MarketPlace. Developer guide is available here https://yuniql.io/docs/migrate-via-azure-devops-pipelines.
Working with Docker Container
Run your database migration thru a Docker container. This is specially helpful on Linux environments and CI/CD pipelines running on Linux Agents as it facilitates your migration without having to worry any local installations or runtime dependencies. Developer guide is available here https://yuniql.io/docs/migrate-via-docker-container.
git clone https://github.com/rdagumampan/yuniql.git c:\temp\yuniql-docker
cd c:\temp\yuniql-docker\samples\basic-sqlserver-sample
docker build -t sqlserver-example .
docker run sqlserver-example -c "<your-connection-string>" -a --platform sqlserver
Working with ASP.NET Core
Run your database migration when your ASP.NET Core host service starts up. This ensures that database is always at latest compatible state before operating the service. Applies to Worker and WebApp projects. Developer guide is available here https://yuniql.io/docs/migrate-via-aspnetcore-application.
dotnet add package Yuniql.AspNetCore
using Yuniql.AspNetCore;
...
...
//docker run -d -e "ACCEPT_EULA=Y" -e "[email protected]!" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest
var traceService = new ConsoleTraceService { IsDebugEnabled = true };
app.UseYuniql(traceService, new Configuration
{
WorkspacePath = Path.Combine(Environment.CurrentDirectory, "_db"),
ConnectionString = "Server=localhost,1400;Database=yuniqldb;User Id=SA;[email protected]!",
AutoCreateDatabase = true,
Tokens = new List<KeyValuePair<string, string>> {
new KeyValuePair<string, string>("VwColumnPrefix1","Vw1"),
new KeyValuePair<string, string>("VwColumnPrefix2","Vw2"),
new KeyValuePair<string, string>("VwColumnPrefix3","Vw3"),
new KeyValuePair<string, string>("VwColumnPrefix4","Vw4")
}
});
Working with Console Application
Run your database migration when Console App starts. Developer guide is available here https://yuniql.io/docs/migrate-via-netcore-console-application.
dotnet add package Yuniql.Core
using Yuniql.Core;
...
...
static void Main(string[] args)
{
//docker run -d -e "ACCEPT_EULA=Y" -e "[email protected]!" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest
var traceService = new ConsoleTraceService { IsDebugEnabled = true };
var configuration = new Configuration
{
WorkspacePath = Path.Combine(Environment.CurrentDirectory, "_db"),
ConnectionString = "Server=localhost,1400;Database=yuniqldb;User Id=SA;[email protected]!",
AutoCreateDatabase = true
};
var migrationServiceFactory = new MigrationServiceFactory(traceService);
var migrationService = migrationServiceFactory.Create();
migrationService.Initialize(configuration.ConnectionString);
migrationService.Run(
configuration.WorkspacePath,
configuration.TargetVersion,
configuration.AutoCreateDatabase,
configuration.Tokens,
configuration.VerifyOnly,
configuration.BulkSeparator);
}
Advanced use cases
- How to bulk import CSV master data
- How to replace tokens in script files
- How to run environment-aware migrations
- How to baseline your database
- How yuniql works
Contributing & asking for help
Please submit ideas for improvement or report a bug by creating an issue. Alternatively, tag #yuniql on Twitter or drop me a message rdagumampanATgmail.com.
If this is your first time to participate in an open source initiative, you may look at issues labeled as first timer friendly issues. If you found an interesting case, you can fork this repository, clone to your dev machine, create a local branch, and make Pull Requests (PR) so I can review and merge your changes.
To prepare your dev machine, please visit https://github.com/rdagumampan/yuniql/wiki/Setup-development-environment
Supported databases and platform tests
Amazon Redshift, Amazon Aurora, Snowflake, Azure Synapse are being evaluated/developed/tested. For running migration from docker container, see instructions here.
Platforms | Build Status | Description |
---|---|---|
sqlserver | Sql Server 2017, Azure SQL Database | |
postgresql | PostgreSql v9.6, v12.1, latest | |
mysql | MySql v5.7, v8.0, latest | |
mariadb | MariaDb v10.2, latest |
Distributions | Build Status | Description |
---|---|---|
Docker image linux-x64 | docker pull rdagumampan/yuniql:linux-x64-latest |
|
Docker imiage win-x64 | docker pull rdagumampan/yuniql:win-x64-latest |
License
Copyright (C) 2019 Rodel E. Dagumampan
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Credits
Yuniql relies on many open-source projects and we would like to thanks:
- CommandlineParser for CLI commands
- CsvTextFieldParser for CSV file parsing
- Npgsql for PostgreSql drivers
- Shouldly for unit tests
- Moq for unit test mocks
- Evolutionary database design by Martin Fowler and Pramod Sadalage
- Microsoft, Oracle, for everything in dotnetcore seems open source now :)
- All the free devops tools! GitHub, AppVeyor, Docker, Shields.io ++
Maintainers
*Note that all licence references and agreements mentioned in the yuniql README section above
are relevant to that project's source code only.