Hello :wave: I am developing a tap for netsuite th...
# singer-tap-development
d
Hello 👋 I am developing a tap for netsuite that connects directly to the database. For this tap I'm using SQL stream type, but I think there is some issue with my configuration:
Copy code
connection_string = "DRIVER=NetSuite ODBC Drivers 8.1;"\
                    "Host=<http://XXXX.connect.api.netsuite.com;%22\|XXXX.connect.api.netsuite.com;"\>
                    "Port=XXXX;"\
                    "Encrypted=1;"\
                    "AllowSinglePacketLogout=1;"\
                    "Truststore=/opt/netsuite/odbcclient/cert/ca3.cer;"\
                    "SDSN=<http://NetSuite.com;%22\|NetSuite.com;"\>
                    f"UID=XXXX;"\
                    f"PWD=XXXX;"\
                    f"CustomProperties=AccountID=XXXX;RoleID=XXXX"

connection_url = URL.create("mssql+pyodbc", query={"odbc_connect": connection_string})
I have the ODBC driver installed, but I get the following error when running meltano discover: ``` Traceback (most recent call last): File "/project/.meltano/extractors/tap-netsuite/venv/bin/tap-netsuite", line 8, in <module> sys.exit(Tapnetsuite.cli()) File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/click/core.py", line 1130, in call return self.main(*args, **kwargs) File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 516, in cli tap = cls( # type: ignore[operator] File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 568, in init super().__init__( File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 103, in init self.mapper.register_raw_streams_from_catalog(self.catalog) File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 165, in catalog self._catalog = self.input_catalog or self._singer_catalog File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 286, in _singer_catalog for stream in self.streams.values() File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 128, in streams for stream in self.load_streams(): File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 318, in load_streams for stream in self.discover_streams(): File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 604, in discover_streams for catalog_entry in self.catalog_dict["streams"]: File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 592, in catalog_dict result["streams"].extend(connector.discover_catalog_entries()) File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/singer_sdk/connectors/sql.py", line 486, in discover_catalog_entries inspected = sqlalchemy.inspect(engine) File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/sqlalchemy/inspection.py", line 64, in inspect ret = reg(subject) File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py", line 182, in _engine_insp return Inspector._construct(Inspector._init_engine, bind) File "/project/.meltano/extractors/tap-netsuite/venv/lib/python3.9/site-packages/sqlalchemy/…
j
Hi @daniela_angelova, you can try to debug and take a look at the query that is being generated, I think that you are trying to call
SELECT schema_name()
that is not a valid query. I don't know exactly what you are trying to accomplish, but it may be feasible using other netsuite taps, there is a version that uses suiteql https://gitlab.com/hotglue/tap-netsuite-rest and should support queries, so you can build your own queries, also new versions for the soap (that has all the object available) and regular rest versions of the API, there may be some internal data that is not accessible though.
d
Thank you @josue_sehnem, The tap you suggest is the first thing I tried, but I couldn’t get the data I need in the format I need, even with adding custom streams, and so on. This is why I decided that it would be easier to build custom tap 😊! I appreciate your help!
j
😕 what were you trying to fetch and in what format? Just curious, because I developed some custom reports on it. One thing to pay attention when using it is that if you don't set the permissions for an object, let's say, Accounts, it will just show as the object does not exists, and it may cause some confusion some times.