{"id":29886124,"url":"https://github.com/pauldzy/dz_orafdw2pg","last_synced_at":"2026-02-08T12:01:58.282Z","repository":{"id":87325481,"uuid":"107043200","full_name":"pauldzy/dz_orafdw2pg","owner":"pauldzy","description":"PL/pgSQL code to migrate and sample data from Oracle to PostgreSQL using Oracle_FDW","archived":false,"fork":false,"pushed_at":"2020-11-23T21:46:03.000Z","size":51,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-31T18:33:11.182Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PLpgSQL","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/pauldzy.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,"zenodo":null}},"created_at":"2017-10-15T19:39:54.000Z","updated_at":"2020-11-23T21:46:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"40c5db44-c88b-4325-8d4c-e84057ef269e","html_url":"https://github.com/pauldzy/dz_orafdw2pg","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pauldzy/dz_orafdw2pg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pauldzy%2Fdz_orafdw2pg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pauldzy%2Fdz_orafdw2pg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pauldzy%2Fdz_orafdw2pg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pauldzy%2Fdz_orafdw2pg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pauldzy","download_url":"https://codeload.github.com/pauldzy/dz_orafdw2pg/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pauldzy%2Fdz_orafdw2pg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29229359,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T09:43:19.170Z","status":"ssl_error","status_checked_at":"2026-02-08T09:42:55.556Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2025-07-31T16:23:13.074Z","updated_at":"2026-02-08T12:01:58.275Z","avatar_url":"https://github.com/pauldzy.png","language":"PLpgSQL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dz_orafdw2pg\nPL/pgSQL code to migrate and sample data from Oracle to PostgreSQL using Oracle_FDW\n\n#### Example to move a set of tables from Oracle to PostgreSQL preserving structure, indexes and constraints:\n\n```\nSELECT dz_pg.init_metadata(\n    pForeignServer    := 'vmwhippet'\n   ,pMetadataSchema   := 'ncc_whipp'\n);\n```\n\nFirst initialize the metadata system with Oracle.   Mainly this creates foreign tables on the pg side which tie to the ALL metadata tables on the Oracle side.  A separate schema for each foreign server is recommended but you can also just keep overwriting a scratch schema over and over.  \n\n```\nSELECT dz_pg.map_foreign_table(\n    pOracleOwner    := 'ECHO_DFR'\n   ,pOracleTable    := ARRAY[\n       'ICP_CONTROL_DATES'\n      ,'NPDES_BIOS_AMOUNTS'\n      ,'NPDES_BIOS_FORMAL_ACTIONS'\n      ,'NPDES_BIOS_INFML_ENF_ACTIONS'\n      ,'NPDES_BIOS_INSPECTIONS'\n      ,'NPDES_BIOS_MGMT_DEFICIENCIES'\n      ,'NPDES_BIOS_MGMT_PATH_REDS'\n      ,'NPDES_BIOS_MGMT_PRCTCE_TYPES'\n      ,'NPDES_BIOS_MGMT_VECTOR_REDS'\n      ,'NPDES_BIOS_PERMITS'\n      ,'NPDES_BIOS_PROGRAMS_ID'\n      ,'NPDES_BIOS_REP_CAT'\n      ,'NPDES_BIOS_SEV_VIOLATIONS'\n      ,'NPDES_BIOS_TRTMNT_PROCSS'\n      ,'NPDES_BIOS_VIOLATION_STATUS'\n      ,'NPDES_BIOS_ANALY_METHODS'\n   ]\n   ,pForeignServer  := 'vmwhippet'\n   ,pTargetSchema   := 'ncc_whipp'\n   ,pMetadataSchema := 'ncc_whipp'\n);\n```\n\nNext map the tables you wish to migrate as foreign tables on the pg side.  This generates the foreign tables mappings in the target schema.\n\n```\nSELECT dz_pg.copy_foreign_table(\n    pForeignTableOwner := 'ncc_whipp'\n   ,pForeignTableName  := ARRAY[\n       'icp_control_dates'\n      ,'npdes_bios_amounts'\n      ,'npdes_bios_formal_actions'\n      ,'npdes_bios_infml_enf_actions'\n      ,'npdes_bios_inspections'\n      ,'npdes_bios_mgmt_deficiencies'\n      ,'npdes_bios_mgmt_path_reds'\n      ,'npdes_bios_mgmt_prctce_types'\n      ,'npdes_bios_mgmt_vector_reds'\n      ,'npdes_bios_permits'\n      ,'npdes_bios_programs_id'\n      ,'npdes_bios_rep_cat'\n      ,'npdes_bios_sev_violations'\n      ,'npdes_bios_trtmnt_procss'\n      ,'npdes_bios_violation_status'\n      ,'npdes_bios_analy_methods'\n   ]\n   ,pMetadataSchema    := 'ncc_whipp'\n   ,pForceObjectID     := FALSE\n   ,pTargetSchema      := 'echo_dfr'\n   ,pForcePublic       := TRUE\n   ,pPostFlightGroup   := 'Biosolids_20180423' \n   ,pPostFlightAction  := 'Flush' \n);\n```\n\nThe copy step does the actual work of creating a receiving table on the pg side and copying the data via the foreign table.  For large tables this can take some time.\n\n```\nSELECT dz_pg.execute_postflight(\n    pPostFlightGroup   := 'Biosolids_20180423'\n   ,pMetadataSchema    := 'ncc_whipp'\n);\n```\n\nFinally some DDL statements need to take place after all tables have been created.  Execute this last step to add those resources.\n\n#### Secondary Example:\n\n```\nSELECT dz_pg.init_metadata(\n    pForeignServer    := 'vmclydesdale'\n   ,pMetadataSchema   := 'ncc_owstg'\n);\n``` \n\n```\nSELECT dz_pg.map_foreign_table(\n    pOracleOwner    := 'RAD_PUBLIC'\n   ,pOracleTable    := ARRAY[\n       'RAD_BEACH_A'\n      ,'RAD_BEACH_EVT2META'\n      ,'RAD_BEACH_L'\n      ,'RAD_BEACH_METADATA'\n      ,'RAD_BEACH_P'\n      ,'RAD_BEACH_SFID'\n      ,'RAD_BEACH_SRCCIT'\n   ]\n   ,pForeignServer  := 'vmclydesdale'\n   ,pTargetSchema   := 'ncc_owstg'\n   ,pMetadataSchema := 'ncc_owstg'\n);\n```\n\n```\nSELECT dz_pg.copy_foreign_table(\n    pForeignTableOwner := 'ncc_owstg'\n   ,pForeignTableName  := ARRAY[\n       'rad_beach_a'\n      ,'rad_beach_evt2meta'\n      ,'rad_beach_l'\n      ,'rad_beach_metadata'\n      ,'rad_beach_p'\n      ,'rad_beach_sfid'\n      ,'rad_beach_srccit'\n   ]\n   ,pMetadataSchema    := 'ncc_owstg'\n   ,pTargetSchema      := 'loading_dock'\n   ,pForcePublic       := TRUE\n   ,pPostFlightGroup   := 'Beach_20180326' \n   ,pPostFlightAction  := 'Flush' \n);\n```\n\n```\nSELECT dz_pg.execute_postflight(\n    pPostFlightGroup   := 'Beach_20180326'\n   ,pMetadataSchema    := 'ncc_owstg'\n);\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpauldzy%2Fdz_orafdw2pg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpauldzy%2Fdz_orafdw2pg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpauldzy%2Fdz_orafdw2pg/lists"}