{"id":15967653,"url":"https://github.com/xxf098/sqlparse","last_synced_at":"2025-05-07T06:04:14.185Z","repository":{"id":40607671,"uuid":"500262876","full_name":"xxf098/sqlparse","owner":"xxf098","description":"A SQL Parser and Formatter for Rust","archived":false,"fork":false,"pushed_at":"2022-07-26T05:35:43.000Z","size":97,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-07T06:04:09.435Z","etag":null,"topics":["parser","rust","sql"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xxf098.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}},"created_at":"2022-06-06T02:09:21.000Z","updated_at":"2022-12-08T05:37:35.000Z","dependencies_parsed_at":"2022-07-31T23:48:34.808Z","dependency_job_id":null,"html_url":"https://github.com/xxf098/sqlparse","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxf098%2Fsqlparse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxf098%2Fsqlparse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxf098%2Fsqlparse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxf098%2Fsqlparse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xxf098","download_url":"https://codeload.github.com/xxf098/sqlparse/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252823921,"owners_count":21809713,"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":["parser","rust","sql"],"created_at":"2024-10-07T18:40:38.445Z","updated_at":"2025-05-07T06:04:14.159Z","avatar_url":"https://github.com/xxf098.png","language":"Rust","readme":"# A SQL Parser and Formatter for Rust\n\n[![Crates.io](https://img.shields.io/crates/v/sqlparse.svg)](https://crates.io/crates/sqlparse)\n\n\n## Example\nTo parse a sql statement:\n\n```rust\n    use sqlparse::{Parser};\n\n    let sql = \"SELECT a, b, 123, myfunc(b) \\\n    FROM table_1 \\\n    WHERE a \u003e b AND b \u003c 100 \\\n    ORDER BY a DESC, b\";\n\n    // grouping\n    let tokens = p.parse(sql);\n    println!(\"{:?}\", tokens);\n    // without grouping\n    let tokens = p.parse_no_grouping(sql);\n    println!(\"{:?}\", tokens);\n\n```\n\nTo format a simple SELECT statement:\n\n```rust\n    use sqlparse::{FormatOption, Formatter};\n\n    let sql = \"SELECT a, b, 123, myfunc(b) \\\n    FROM table_1 \\\n    WHERE a \u003e b AND b \u003c 100 \\\n    ORDER BY a DESC\";\n\n    let mut f = Formatter::default();\n    let mut options = FormatOption::default();\n    options.reindent = true;\n    options.indent_width = 2;\n    options.indent_char = \" \";\n    options.reindent_aligned = true;\n\n    \n    let formatted_sql = f.format(sql, \u0026mut options);\n    println!(\"{}\", formatted_sql);\n\n```\n\noutputs\n```sql\nSELECT a,\n       b,\n       123,\n       myfunc(b)\n  FROM table_1\n WHERE a \u003e b\n   AND b \u003c 100\n ORDER BY a DESC\n```\n\nTo format multiple statements:\n\n```rust\n  use sqlparse::{FormatOption, Formatter};\n  let sql = \"SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056; UPDATE employees SET email = 'mary.patterson@classicmodelcars.com' WHERE employeeNumber = 1056;\";\n  let mut formatter = FormatOption::default_reindent();\n  formatter.reindent_aligned = true;\n  let formatted_sql = f.format(sql, \u0026mut formatter);\n  println!(\"{}\", formatted_sql);\n\n```\n\noutputs\n```sql\nSELECT firstname,\n       lastname,\n       email\n  FROM employees\n WHERE employeeNumber = 1056;\nUPDATE employees\n   SET email = 'mary.patterson@classicmodelcars.com'\n WHERE employeeNumber = 1056;\n```\n\nsee more on `examples` folder","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxf098%2Fsqlparse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxxf098%2Fsqlparse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxf098%2Fsqlparse/lists"}