{"id":32424602,"url":"https://github.com/alipsa/jparq","last_synced_at":"2025-10-25T19:51:27.423Z","repository":{"id":319516131,"uuid":"1077794160","full_name":"Alipsa/JParq","owner":"Alipsa","description":"JDBC driver for parquet files","archived":false,"fork":false,"pushed_at":"2025-10-18T17:08:28.000Z","size":69,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-19T10:29:47.789Z","etag":null,"topics":["jdbc","jdbc-driver","parquet","parquet-files","parquet-tools"],"latest_commit_sha":null,"homepage":"","language":"Java","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/Alipsa.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,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-16T18:43:24.000Z","updated_at":"2025-10-18T17:08:31.000Z","dependencies_parsed_at":"2025-10-19T10:29:54.116Z","dependency_job_id":null,"html_url":"https://github.com/Alipsa/JParq","commit_stats":null,"previous_names":["alipsa/jparq"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Alipsa/JParq","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2FJParq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2FJParq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2FJParq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2FJParq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Alipsa","download_url":"https://codeload.github.com/Alipsa/JParq/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2FJParq/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281012089,"owners_count":26429437,"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","status":"online","status_checked_at":"2025-10-25T02:00:06.499Z","response_time":81,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["jdbc","jdbc-driver","parquet","parquet-files","parquet-tools"],"created_at":"2025-10-25T19:51:25.866Z","updated_at":"2025-10-25T19:51:27.412Z","avatar_url":"https://github.com/Alipsa.png","language":"Java","readme":"# JParq\nJParq is a JDBC driver for parquet files. It allows you to query parquet files using SQL.\nIt works by regarding a directory as a database and each parquet file in that directory as a table. Each parquet file must have a `.parquet` extension and each such file is referred to using the filename (minus the .parquet extension) as the table.\n\nJParq relies heavily on Apache Arrow and Apache Parquet libraries for reading the parquet files and on jsqlparser to parse the sql into processable blocks.\n\nNote: A large proportion of the code was created in collaboration with ChatGPT 5.\n\n# Usage\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ese.alipsa\u003c/groupId\u003e\n  \u003cartifactId\u003eparquet-jdbc\u003c/artifactId\u003e\n  \u003cversion\u003e0.1.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n\n```java\nimport java.net.URISyntaxException;\nimport java.net.URL;\nimport java.nio.file.Path;\nimport java.nio.file.Paths;\nimport java.sql.Connection;\nimport java.sql.DriverManager;\nimport java.sql.ResultSet;\nimport java.sql.ResultSetMetaData;\nimport java.sql.SQLException;\nimport java.sql.Statement;\n\nimport se.alipsa.jparq.JParqSql;\n\npublic class JParqExample {\n\n  // Standard jdbc\n  void selectMtcarsLimit() throws SQLException {\n    String jdbcUrl = \"jdbc:jparq:/home/user/data\";\n    try (Connection conn = DriverManager.getConnection(jdbcUrl);\n         Statement stmt = conn.createStatement();\n         ResultSet rs = stmt.executeQuery(\"SELECT * FROM mtcars LIMIT 5\")) {\n      while (rs.next()) {\n        System.out.println(rs.getString(1));\n      }\n    }\n  }\n\n  // Using the JparqSql helper\n  void selectMtcarsToyotas() throws SQLException {\n    String jdbcUrl = \"jdbc:jparq:/home/user/data\";\n    JParqSql jparqSql = new JParqSql(jdbcUrl);\n    jparqSql.query(\"SELECT model, cyl, mpg FROM mtcars where model LIKE('Toyota%')\", rs -\u003e {\n      try {\n        while (rs.next()) {\n          System.out.println(rs.getString(1) + \", \" + rs.getInt(2) + \", \" + rs.getDouble(3));\n        }\n      } catch (SQLException e) {\n        System.out.println(\"Query failed: \" + e);\n      }\n    });\n  }\n}\n```\nThe driver is automatically registered using the service interface but if your client needs the driver fo some reason,\nthe Driver class name is `se.alipsa.jparq.JparqDriver`.\ne.g:\n```groovy\nClass.forName(\"se.alipsa.jparq.JparqDriver\")\nConnection conn = DriverManager.getConnection(jdbcUrl)\n// etc...\n```\n\n## SQL Support\nThe following SQL statements are supported:\n- `SELECT` with support for\n  - `*` to select all columns\n  - alias support for columns and tables\n- `SELECT` statements with `WHERE` supporting:\n  - `BETWEEN`, `IN`, `LIKE` operators \n  - `AND`, `OR`, `NOT` logical operators \n  - Comparison operators: `=`, `!=`, `\u003c`, `\u003e`, `\u003c=`, `\u003e=` \n  - Null checks: `IS NULL`, `IS NOT NULL` \n- `ORDER BY` clause with multiple columns and `ASC`/`DESC` options\n\n### To be implemented in the near future\n- `DISTINCT` support in `SELECT` clause\n- Support computed expressions with aliases (e.g. SELECT mpg*2 AS double_mpg)\n- Functions support\n  - Date functions\n  - Numeric functions\n  - String functions\n- `GROUP BY` with simple grouping\n  - `COUNT(*)` aggregation\n  - `HAVING` clause with simple conditions\n  - `SUM`, `AVG`, `MIN`, `MAX` aggregation functions in `SELECT` clause\n- `OFFSET` support\n- Subquery support\n\n### Might be implemented in the future\n- Join support\n- CTE\n- Windowing\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falipsa%2Fjparq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falipsa%2Fjparq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falipsa%2Fjparq/lists"}