ParseOra
A fast, lossless parser for Oracle SQL, PL/SQL and SQL*Plus scripts, from Oracle 12.2 to 26ai. Free to use; part of QiVo Studio. The parser is compiled Rust: no Oracle client and no database are needed.
pip install qivo-parseora
ParseOra Lab: the parser in your browser
parseora lab # opens http://127.0.0.1:8790/ (only on this machine; works offline)
Type or paste SQL, open several files or drop them on the page, choose the Oracle version, and see:
- Tree: the syntax tree drawn, to zoom, move and fold; click a node to find it in the source
- Outline: the same tree as a list you can search; Tokens: every token with its kind and position
- Statements and Problems: errors and warnings marked in the editor; click one to jump to it
- Profile: where the time goes, statement by statement
- Download: a report for all open files (HTML), each table as CSV, everything as JSON or one ZIP, and the tree as JSON or SVG
Reports
parseora report src/ --out report/ # report.html, files.csv, statements.csv, problems.csv,
# tables.csv, objects.csv, report.json
parseora report src/ --format csv --version 19c # only the CSV files, checked against Oracle 19c
parseora report src/ --fail-on-errors # exit status 1 if a statement does not parse (CI)
report.html is one file that opens anywhere, offline: summary, files, problems, statements, tables used, objects
created; each table sortable, filterable and downloadable. The same files give the same report, byte for byte.
Command line
parseora parse install.sql # every statement and PL/SQL unit: kinds, errors, speed
parseora parse --json src/ # one JSON line per statement: kind, errors, tables, text
parseora parse --errors --version 19c . # where it does not parse, and constructs newer than 19c
parseora parse --dump pkg_load.pkb # the syntax tree
parseora split --summary deploy.sql # the script split the way SQL*Plus runs it
parseora lex --strict src/ # tokens; exit status 1 on any diagnostic (for CI)
parseora catalog --schema APP install/ # the tables, views and code the scripts create
A path is a file or a folder (every .sql, .pks, .pkb, .prc, .fnc, .trg, .vw... file under it).
Python
import parseora
for s in parseora.parse(open("load.sql").read(), version="19c"):
print(s["line"], s["statement"], s["tables"], [e["message"] for e in s["errors"]])
parseora.tables("INSERT INTO dw.fact SELECT * FROM stg.orders o JOIN stg.lines l USING (id)")
# ['DW.FACT', 'STG.LINES', 'STG.ORDERS']
parseora.split(script) # [{kind: sql | plsql | sqlplus, text, line, col, command}]
parseora.tokenize(text) # every token, comments and whitespace included (lossless)
What it covers: queries (WITH, joins, PIVOT, MODEL, MATCH_RECOGNIZE, analytics, CONNECT BY...), DML including multi-table INSERT and MERGE, DDL, every PL/SQL unit and statement, conditional compilation, and SQL*Plus commands. Unknown input never stops it: errors are reported and the rest is parsed.
Name resolution (what each name refers to), column lineage, code rules and the MetaGraph for AI tools are in
QiVo Studio: pip install qivo-studio.
Licence: the QiVo Studio Licence Agreement 1.0 (LICENSE.md in the package): free to use, no reverse engineering.
Open-source components: THIRD_PARTY_NOTICES.md.
Questions, bugs or ideas: admin@qivo.studio, or open an issue.
Metadata
Release files for qivo-parseora 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| qivo_parseora-0.1.5-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| qivo_parseora-0.1.5-cp310-abi3-manylinux_2_28_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| qivo_parseora-0.1.5-cp310-abi3-manylinux_2_28_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| qivo_parseora-0.1.5-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
| qivo_parseora-0.1.5-cp310-abi3-macosx_10_12_x86_64.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 5.0 MB
Release files / qivo_parseora-0.1.5-cp310-abi3-win_amd64.whl
| Download URL | qivo_parseora-0.1.5-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
987d51cff66747a76deee5a23e524e0448981abd975ed9e38eabbd4ec2c90561
|
|
BLAKE2b-256 checksum How to use checksums |
44723e6b9c509e39ed39fdd3908d52aa456451ca7306222eee2f72c2d69dd75f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / qivo_parseora-0.1.5-cp310-abi3-manylinux_2_28_x86_64.whl
| Download URL | qivo_parseora-0.1.5-cp310-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
6c8d2eee10137106378dd6f7d1f8be67cb308e5ee7b7ec0e819eba46dc0b3f2a
|
|
BLAKE2b-256 checksum How to use checksums |
7ec945ee8497ab42ea5e28ce75c4068124e12964cf42e891a976675fbc993cde
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / qivo_parseora-0.1.5-cp310-abi3-manylinux_2_28_aarch64.whl
| Download URL | qivo_parseora-0.1.5-cp310-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 986.2 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
e8a09849c1dc2273f7b807d245488924d2ff5879bac8acb4fad78ac7deb5826a
|
|
BLAKE2b-256 checksum How to use checksums |
06e9bba43aa44ddb8966ec5c986e40047b614856129efb528a076a8841f37c4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / qivo_parseora-0.1.5-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | qivo_parseora-0.1.5-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 947.2 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e72e1996d62c811b0cbcad1258be5bb9bf01e26b58870710bf3c451b64dff555
|
|
BLAKE2b-256 checksum How to use checksums |
9de1ef7845275ea4ad16d1c6bf809d2dd17b8b4e53b834020d019f6ed0b977de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / qivo_parseora-0.1.5-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | qivo_parseora-0.1.5-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
cbdb05b815bece63b7a1e084e6eea1a4fa051184e70201deea52437e79fe937b
|
|
BLAKE2b-256 checksum How to use checksums |
0f29a4a7ef1e3a7f343572d5cf302b316cefac3b7778a836af2984ef8e375587
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency log