Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
I have a simple job that moves data from a database table to salesforce via tmap. I modified the source table to add a new column, how do i get tmap to recognize and present the new column? when i retrieve the table changes, it asks to "propagate" the changes, but the newly added column is never added to my tmap. is there a way to refresh the tmap component such that it will see the new columns? this is really frustrating as the only way i have found to work around this is to create a new job and remap everything. there must be an easy way to do this. any help would be greatly appreciated. thanks!!
You need to sort your missing Jar issue. Just click on the Jar icon and search your machine for that Jar. If you cannot find a version of it, then just download it.
However you do not need to do it this way. The reason you are getting nothing is because nothing is being sent from your database component. You might have the column in your SQL but there is no column in the schema for it. In your DB component, go to the "Component" tab and click on the ellipsis button next to "Edit Schema". This will bring up the schema that you DB component is using. You need to add your new column there. It should then ask if you want to propagate your schema (although since you've already created it in you tMap, it may not). Every component (well, most) has a schema that must be set. The SQL query and the schema are not the same thing here.
Can you post a screenshot of your tMap (the mapping screen) and let us know what is missing. I suspect that this will be very easy to help you resolve, but we need to know precisely what is going on first.
It might also be good to see the schema of the component that is passing data to the tMap.
Also, do you have the table schema saved in the repository. Are you attempting to use this?
I attached 2 pictures, the first is of the source. here is the sequence of events:
Now i want to use that new column in my job. when i go to the job, the column is not in the source query, so i added it. when i go to the tmap component, i want to now map that new column, but its not available. see first arrow in the pic. i have tried at the bottom of the tmap source, to add the new column - second arrow. i can add a column here and map it, but when i run job, the data in the new column is not being used, meaning it is always null/blank in the target/salesforce.
To get around this for now, i create a brand new job and remap everything, this works fine. but the mapping is tedious and i assume that this is a basic operation for all etl developers. Again, i dont know talend very well, but I would hope that there was a way to "refresh" the jobs after metadata has changed to include those changes. appreciate your help.
Thanks!!
OK, the issue here is because your tMSSqlInput component is using a BuiltIn schema. This in itself isn't bad, but if you change your DB schema you MUST manually update it when you change the SQL (or click the "Guess Schema" button).
not sure i understand, if i change it to repository, it wants me to install sql jdbc driver. but the metadata has the new columns, so why cant the input module see these?
You don't need to set it to use a repository schema (although that would be better), all you need to do is set your query correctly (as you have done) and then click the "Guess Schema" button. You said you were clicking the "Guess Query" button. The "Guess Schema" button derives the schema from the SQL you have used. If that doesn't work then you can just set your columns by configuring the schema yourself.
when i "guess schema" it prompts me to install a jdbc driver for sql server. this has to be available already as i am reading/writing to/from sql server.