Skip to main content

No project description provided

Project description

SQLecto

SQLecto is a command-line tool for converting SQL queries across different SQL dialects, providing flexibility for users working with SQL transformations. This tool leverages the powerful SQLGlot library for parsing and transpiling SQL queries.

Features

  • Dialect Conversion: Transpile SQL queries from one SQL dialect to another (e.g., Spark to Snowflake)
  • File Support: Process individual SQL/Python files or entire directories containing SQL code
  • Configurable Mappings: Define custom table mappings and configurations via JSON or YAML files

Requirements

  • Python 3.8+

Quck Start

Installation

You can install SQLecto via pipx (recommended) or pip.

Using pipx

pipx install sqlecto

Using pip

pip install sqlecto

Basic Usage

Convert a single SQL file:

sqlecto --source-dialect spark --target-dialect snowflake --source-files ./my_query.sql

Convert all SQL files in a directory

sqlecto --source-dialect spark --target-dialect snowflake --source-dir ./sql_scripts

Command Options

Option Required Description Default
--source-files No SQL/Python files to process None
--source-dir No Directory containing SQL/Python files Current directory
--source-dialect Yes Source SQL dialect None
--target-dialect Yes Target SQL dialect None
--table-mappings No Table name mappings None
--table-mappings-file No File containing table mappings None
--config-file No Configuration file path None
--output-dir No Output directory for converted files ./transpiled_queries

Example Command

sqlecto --source-dialect spark --target-dialect snowflake \
    --source-dir ./sql_scripts --output-dir ./transpiled_queries

Configuration

Configuration File Example

Configuration can be managed via JSON or YAML files, allowing reusable settings:

{
  "source_files": ["./path/to/file.sql", "./path/to/file2.py"],
  "source_dialect": "spark",
  "target_dialect": "snowflake",
  "output_dir": "./transpiled_queries",
  "table_mappings": [{ "src_table": "old_table", "dst_table": "new_table" }]
}

Table Mappings

To replace table names within SQL queries, use --table-mappings or specify mappings in a configuration file. Mappings follow the format:

--table-mappings source_table:target_table

Or in JSON/YAML:

"table_mappings": [
    {"src_table": "old_table", "dst_table": "new_table"}
]
# mappings.yaml
table_mappings:
  - src_table: old_table1
    dst_table: new_table1
  - src_table: old_table2
    dst_table: new_table2

Examples

Basic Conversion

sqlecto --source-dialect spark --target-dialect snowflake \
    --source-files ./query.sql --output-dir ./converted

Directory Processing with Table Mappings

sqlecto --source-dialect spark --target-dialect snowflake \
    --source-dir ./sql_scripts \
    --table-mappings old_db.table1:new_db.table1 \
    --output-dir ./converted

Using Configuration File

sqlecto --config-file ./config.yaml

Credits

This tool heavily relies on the SQLGlot package by Toby Mao, providing robust and reliable SQL dialect transformations.

Contributing

Contributions are welcome! Please fork the repository and create a pull request for any improvements.

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqlecto-0.1.0.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqlecto-0.1.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file sqlecto-0.1.0.tar.gz.

File metadata

  • Download URL: sqlecto-0.1.0.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for sqlecto-0.1.0.tar.gz
Algorithm Hash digest
SHA256 34787506bcec39330288a54fb429f9487c2ca8edb393949af3bc5d8adb3ec5a2
MD5 3df74f82bf1f408fcb459c0f275a35a4
BLAKE2b-256 c23d6248ef879f4a0da8493264a47e67c1cb9a0de0453fa8b7e34726506b3150

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlecto-0.1.0.tar.gz:

Publisher: release.yaml on valdAsync/sqlecto

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlecto-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: sqlecto-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for sqlecto-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3f6861aab524b6bf77325724cf0bd52f5321b7b0c67cf0795f7c67e02feac2bc
MD5 4908a28677e04ad3a2165dcd053de7ec
BLAKE2b-256 3f6a0966cb1ace2893fb3f751e7d7e90953530550cc899ee7faa7e3edebfdb63

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlecto-0.1.0-py3-none-any.whl:

Publisher: release.yaml on valdAsync/sqlecto

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page