Pawel Plaszczak
12/26/2024, 5:01 PMmeltano config tap-oracle test
but its output is cryptic.
So for now, I abandonned this route, because I found another: I spotted that the errors included warnings that said that cx-oracle was outdated, and recommended python-oracle driver instead. So I thought maybe this would be a better route. I went to the python-oracle page: https://python-oracledb.readthedocs.io/en/latest/user_guide/installation.html and installed python-oracle and tested that it connects to my database. So I have partial success but what next? Now - okay, python-oracle works, but now how to come back to Meltano and make this working driver part of the Meltano configuration? How to make Meltano upload Oracle table using this working python-pracle config? Shall I still somehow use the tap-oracle extractor (how)?
I also saw that there are alternative implementation of Oracle connector on this page: https://hub.meltano.com/extractors/tap-oracle/ but since I've already been spending quite some time, I prefer to ask before trying.
In short, what's the recommended and the most standard way to connect Meltano to Oracle database as source of data? Oracle (source) is remote, while the local data destination (on the same machine as Meltano install) can be whatever - initially, for the prototyping phase, I'd say PostgreSQLvisch
12/26/2024, 5:15 PMUnrecognized replication_method NoneSee https://docs.meltano.com/guide/integration/#replication-methods New taps tend to be written with the singer sdk and they default to full_table replication so folks don't hit the kind of thing
What's the recommended and the most standard way to connect Meltano to Oracle database as source of data?Most objective answer there is https://hub.meltano.com/extractors/tap-oracle Steve Clark's fork of pipeline wise seems to be the most used.
I went to the python-oracle page: https://python-oracledb.readthedocs.io/en/latest/user_guide/installation.html and installed python-oracle and tested that it connects to my database. So I have partial success but what next? Now - okay, python-oracle works, but now how to come back to Meltano and make this working driver part of the Meltano configurationYou could write a tap from scratch here https://sdk.meltano.com/en/v0.43.1/ to oracle, using that driver if it's supported by sqlalchemy (looks like it is) Generally your questions point to needing to understand Singer a bit better ( https://hub.meltano.com/singer/spec is a good resource that can you get up to speed pretty quickly) , specifically catalogs. Unfortunately tap-oracle isn't used by a ton of folks (I use it everyday in production) so it hasn't been "modernized" to make it easier for new folks to hop in and play around. You'll get there, it's worth the time here.
Oracle (source) is remote, while the local data destination (on the same machine as Meltano install) can be whatever - initially, for the prototyping phase, I'd say PostgreSQLSure that's fine, you could also start with jsonl / stdout to get the hang of things ie
meltano invoke tap-oracle > out
, just depends on how deep you want to go.Pawel Plaszczak
12/26/2024, 9:42 PMvisch
12/27/2024, 1:26 PMPawel Plaszczak
01/06/2025, 4:01 PMvisch
01/06/2025, 4:10 PMreplication_key: PERSON_ID
?Pawel Plaszczak
01/06/2025, 4:13 PMvisch
01/06/2025, 4:13 PMPawel Plaszczak
01/06/2025, 4:15 PMvisch
01/06/2025, 4:15 PMvisch
01/06/2025, 4:16 PMPawel Plaszczak
01/06/2025, 4:19 PMPawel Plaszczak
01/06/2025, 4:20 PMPawel Plaszczak
01/06/2025, 4:20 PMEdgar RamÃrez (Arch.dev)
01/06/2025, 4:23 PMis "some-entity-id" a table name?Yup. For DB extractors it usually includes the schema/db name, e.g.
public-users
for a postgres db.Pawel Plaszczak
01/06/2025, 4:28 PMPawel Plaszczak
01/08/2025, 12:26 PM{
"type":"STATE",
"value":{
"bookmarks":{
"PLASZPA-PERSONS":{
"last_replication_method":"INCREMENTAL",
"replication_key":"PERSON_ID",
"replication_key_value":3
}
}
}
}
and then I invoked tap-oracle with this state:
meltano invoke tap-oracle -s state.log
But again, the replication-key-value was ignored - all three records with PERSON_ID values 1,2, and 3 got replicated. Is this because this variable is not supported by tap-oracle?