{"id":16320319,"url":"https://github.com/hellonico/sync-schema","last_synced_at":"2025-07-27T16:11:14.594Z","repository":{"id":66707098,"uuid":"154461484","full_name":"hellonico/sync-schema","owner":"hellonico","description":"Poor man's sync tool from CSV to SQL database (oracle)","archived":false,"fork":false,"pushed_at":"2018-10-24T08:19:31.000Z","size":96,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-14T08:10:21.127Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","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/hellonico.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":"2018-10-24T07:58:05.000Z","updated_at":"2018-10-24T08:19:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"6d179292-b3ee-4640-88d0-2a7f2a63db30","html_url":"https://github.com/hellonico/sync-schema","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hellonico/sync-schema","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellonico%2Fsync-schema","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellonico%2Fsync-schema/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellonico%2Fsync-schema/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellonico%2Fsync-schema/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hellonico","download_url":"https://codeload.github.com/hellonico/sync-schema/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellonico%2Fsync-schema/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267384365,"owners_count":24078577,"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-07-27T02:00:11.917Z","response_time":82,"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":[],"created_at":"2024-10-10T22:43:59.285Z","updated_at":"2025-07-27T16:11:14.589Z","avatar_url":"https://github.com/hellonico.png","language":"Java","readme":"\n# goal\n\nImport data from csv files to SQL database via JDBC.\nOn first import, the table will be created as needed. Columns are all the same with datatype string.\nOn successive imports, the table will be added columns (not removed) to reflect CSV file update.\nColumn names are stripped of ' ' and '_' and lowercase-d.\nData is streamed from the CSV file, so constant rather low (for java) memory usage.\n\n# to run the basic test\n\n```\n./demo.sh\n```\n\nWhich calls:\n```\n./gradlew run --args src/test/resources/sync.properties\n```\n\nWith the sync properties file below:\n```\ninputFile=src/test/resources/sales.csv\ndbURL=jdbc:sqlite:sample.db\ntableName=sales\ntableSchema=null\npassword=\nusername=\n```\n\nThis will read values from the file \n```\nsrc/test/java/resources/sales.csv\n```\nand store data in table named **sales** in a newly (or existing) sqllite database: __sample.db__\n\n# programmatically \n\n```\nProperties props = new Properties();\nprops.load(App.class.getClassLoader().getResourceAsStream(\"sync.properties\"));\n\nApp app = new App();\napp.execute(props);\n```\n\nwith a similar property file with the following content\n```\ninputFile=src/test/resources/sales.csv\ndbURL=jdbc:sqlite:sample.db\ntableName=sales\n# debug=true\n```\n\nWill execute the same.\nApp is not thread safe, but can be reused for a new import.\n\n## oracle \n\nthis runs ok on oracle.  Here is a sample oracle.properties file to use with the sync-er\n\n```\ninputFile=src/test/resources/sales.csv\ndbURL=jdbc:oracle:thin:@localhost:1521:orcl\ntableName=sales\nusername=username\npassword=password\ncolumnType=varchar2 (50)\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhellonico%2Fsync-schema","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhellonico%2Fsync-schema","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhellonico%2Fsync-schema/lists"}