{"id":23081620,"url":"https://github.com/ceyhunkerti/oracle-elo","last_synced_at":"2025-07-05T03:07:32.269Z","repository":{"id":92200056,"uuid":"102592021","full_name":"ceyhunkerti/oracle-elo","owner":"ceyhunkerti","description":"extract load data","archived":false,"fork":false,"pushed_at":"2020-05-19T17:22:43.000Z","size":20706,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-03T14:16:14.838Z","etag":null,"topics":["dblink","dwh","etl","extraction","load","oracle","oracle-database","plsql","sql"],"latest_commit_sha":null,"homepage":null,"language":"PLSQL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ceyhunkerti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2017-09-06T09:49:14.000Z","updated_at":"2024-05-07T19:51:25.000Z","dependencies_parsed_at":"2023-06-07T23:15:13.929Z","dependency_job_id":null,"html_url":"https://github.com/ceyhunkerti/oracle-elo","commit_stats":null,"previous_names":["ceyhunkerti/oracle-elo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ceyhunkerti/oracle-elo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceyhunkerti%2Foracle-elo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceyhunkerti%2Foracle-elo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceyhunkerti%2Foracle-elo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceyhunkerti%2Foracle-elo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ceyhunkerti","download_url":"https://codeload.github.com/ceyhunkerti/oracle-elo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceyhunkerti%2Foracle-elo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263674269,"owners_count":23494545,"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":["dblink","dwh","etl","extraction","load","oracle","oracle-database","plsql","sql"],"created_at":"2024-12-16T13:54:22.142Z","updated_at":"2025-07-05T03:07:32.250Z","avatar_url":"https://github.com/ceyhunkerti.png","language":"PLSQL","readme":"\u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"\u003e\u003cimg alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by/4.0/88x31.png\" /\u003e\u003c/a\u003e\u003cbr /\u003eThis work is licensed under a \u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"\u003eCreative Commons Attribution 4.0 International License\u003c/a\u003e.\n\n\nSimple extract-load utility for **oracle** database. ELO is DB-Link only so you\ncan only use it for oracle -\u003e oracle extractions. It is dead-simple and super fast\nto define extraction rule for a table.\n\n### Dependencies\n\n  **ELO** uses [PL](https://github.com/bluecolor/pl) for logging.\n  **PL** is a small utility and logging library for oracle.\n\n### Installation\n\n  * Make sure you have installed [PL](https://github.com/bluecolor/pl)\n\n  * Change the current schema to util\n\n    ```sql\n    alter session set current_schema = util;\n    ```\n\n  * Run the contents of [init.sql](src/init.sql)\n\n  * Run the contents of [elo.pks.sql](src/elo.pks.sql)\n\n  * Run the contents of [elo.pkb.sql](src/elo.pkb.sql)\n\n### Tables\n\n  ##### ELO_TABLES\n\n  * `name` unique name for the extraction of the table\n  * `db_link` db link to use for the extraction\n  * `source` source table including schema `eg. SRC_SCHEMA.TABLE_NAME`\n  * `target` target table including schema `eg. TRG_SCHEMA.TABLE_NAME`\n  * `filter` filter for the source data\n  * `source_hint` select hint for the source\n  * `target_hint` insert hint for the target\n  * `delta_column` column to check if data is extracted using delta method.\n  * `last_delta` last extracted value of the delta column\n  * `excluded` exclude from running. usefull when you want to skip execution but keep the definition\n  * `drop_create` load table with drop create like `create table table_name as select ...`\n\n  ##### ELO_COLUMNS\n\n  * `name` unique name for the extraction of the table. same name with `ELO_TABLES`\n  * `source_col` source column or expression to extract.\n  * `target_col` target column to load data.\n  * `excluded` exclude from extracted columns. usefull when you want to skip the column but keep the definition\n\n\n### Running\n\n  Just call `elo.run` with a name parameter. example:\n\n  ```sql\n    elo.run('NAME_OF_EXT_DEF');\n  ```\n\n### Logs\n\n  You can see the logs by issuing a select like;\n\n  ```sql\n    select * from util.logs order by 3 desc;\n  ```\n\n\n### Helpers\n\n  Elo provides `define` helper mothod to quickly define extractions. You can also use `def` or `d` which are\n  syntactic sugars over `define`.\n\n  Example usages of `define`\n\n  ```sql\n    -- defines all columns of the table to column list\n    begin\n      util.elo.define('src_owner.src_table_name@my_db_link');\n    end;\n  ```\n\n  ```sql\n    -- only the specified columns\n    begin\n      util.elo.def(\n        i_source  =\u003e 'src_owner.src_table_name@my_db_link',\n        i_columns =\u003e 'first_col,second_col,another_col'\n      );\n    end;\n  ```\n\n  ```sql\n    -- all options\n    begin\n      util.elo.d(\n        i_name    =\u003e 'my_extraction',\n        i_source  =\u003e 'src_owner.src_table_name',\n        i_target  =\u003e 'trg_owner.trg_table_name',\n        -- you can use new line and space in i_columns\n        i_columns =\u003e 'first_col,second_col,another_col,\n          yet_another_col, some_col_name\n        ',\n        i_db_link =\u003e 'my_db_link'\n        i_filter  =\u003e 'my_column = 2'\n      );\n    end;\n  ```\n\n  ```sql\n    -- Helper method to define extractions quickly. Inserts definitions to util.elo_tables and\n    -- util.elo_columns.\n    --\n    -- If only i_source is given, it should be in the form of [remote_schema.remote_table@my_db_link]\n    -- If i_columns is not given then all columns will be extracted\n    -- If i_columns is given then new columns in the list will be inserted to the elo_columns.\n    -- Definitions work in insert mode which means if table or column definitions already exists\n    -- then only the new ones will be inserted. This method does not override any existing records in\n    -- elo_tables or elo_columns\n  ```\n\n  There is also `add_filter` helper to add additional filtering to an existing extraction definition.\n\n  Example;\n\n  ```sql\n  --- this will generate a query with a `where [existing_filter and] my_column = 2`\n  begin\n    util.elo.add_filter('my_extraction_name', 'my_column = 2');\n  end;\n  ```\n\n  To delete entries from `elo_tables` or clear column mappings of an extraction use;\n  - `delete`: Deletes an extraction definition including columns.\n  - `del`: Same as `delete`\n  - `delete_columns`: Deletes only column mappings for given extraction.\n  - `delcols`: Same as `delete_columns`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceyhunkerti%2Foracle-elo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fceyhunkerti%2Foracle-elo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceyhunkerti%2Foracle-elo/lists"}