Delimiter error in Informatica data transfer - etl

Actually I am trying to transfer data from one flat file to another using Informatica.
The delimiter is |, ex.
Animesh|Srivastava|lucknow
But in output file data is showing
"Animesh",|"Srivastava",|"Lucknow"
I cannot figure out from where "" and , are being added.

You have to change this in the session properties.
In workflow manager,
session --> Mapping tab --> Target
When you click on Target, you will find option called set file properties,
set file properties --> Advanced --> optional Quotes:
You will find None , Single and Double.
Select the option none. Default option is Double

Related

SSIS export data to flat file and omit header from the output

I am creating an SSIS package to query a database and extract the results to a csv file. I'm using Visual Studio 2019. I have set "Header rows to skip:" to 0 - 4. I did the same with data rows in the Preview tab, and nothing changes. I do not see anything the Properties to remove the header. I also tried this link, and it did not help. SSIS Flat File Destination Column Headers. Unchecking the box on this screen immediately gives me this error.
Severity Code Description Project File Line Suppression State Error
Validation error. Data Flow Task Flat File Destination [2]: The
number of input columns for Flat File Destination. Inputs[Flat File
Destination Input] cannot be zero.
What else is there?
The answer is to set header rows to skip to 0 and uncheck the column names in the first data row. To get this to create a file manager with the column headings, I used the following steps:
Delete the flat file destination and file manager, if exists
Add new flat file destination and click new flat file manager
When the dialogue opens, it asks for an existing file. Instead, browse to a path and enter a new file name. Column names in the first data row will not be checked, so click OK and OK. This will populate a flat file without headers.

Pentaho-spoon Reading text file

We have a text file with multiple fields and it is being used in different transformations. When I do 'Get Fields' in Text File Input, I get fields as follows:
I don't need all these fields for the next step so I kept only required fields(i.e. 1st, 3rd,18th and 19th) as follows and removed other fields in Text File Input as there are '?' per parameter in the next step.
But it is picking the value of initial fields only.
I even tried using 'Position' as per the file, but no luck. Can anyone please tell me what I am missing here?
Text File Input reads the columns sequentially even though you specify certain column names in the Fields tab.
Select all the fields in the Fields tab of the Text File Input and use Select Values as the next step and there select only the required fields.

What's the difference between Local and Default SQLCMD variables in SQL Server Database Project properties?

I have a SQL Server database project (VS2017) and in project properties, the SQLCMD Variables tab looks like this:
Question: I can create a SQLCMD variable and set a Default Value and a Local Value for it. What is the difference?
Note: I do currently use SQLCMD variables in my project, so I think I know how they work, but I can't get my head round this distinction. According to what documentation I can find (highlighting is mine):
In SQL Server Database Projects you can utilize SQLCMD variables to
provide dynamic substitution to be used for debugging or publishing.
You enter the variable name and values and during build, the values
will be substituted. If there are no local values, the default value
will be used. By entering these variables in project properties, they
will automatically be offered in publishing and are stored in
publishing profiles. You can pull in the project values of the
variables into publish via the Load Values button.
So it seems that:
If you only have a Default value, that will be used
If you only have a Local value, that will be used
If you have both, the Local value will always be used.
How does this help me? There seems to be no point in having both values set, so why do we need two different values?
Local has higher precedence over default when Publishing.
This means that if you have both default and local values filled in, and click Publish, your variable values in Publish window will be automatically filled by local values, even without you clicking on the Load Values button.
If you only have default values, then no values will be automatically filled in the Publish window, until you click on the Load Values button.
Then values will get filled in with the default values.
You can always override the variable values in the Publish window, even the ones which were filled in as local.
So, purpose of local values is to prepare the filled in, final values when Publishing.
Leaving them empty demands for you to either click on Load Values to get the default values, or to manually fill the variable values.
so why do we need two different values?
The value you provide in the Default column will be stored in the
project file (.sqlproj), therefore should be source controlled.
The Local value is stored in the non-version controlled .user file
(.sqlproj.user).
While the Local value will override the default value when building locally, if you use a build server - the default value has to be set because the .user file won't be used by the build server, it will use the default value.

Comma separated issue in informatica

I have flat file coming in this format. if you look at the last name and String is comma separated with in double quotes.
First_NAME, last_name, Age
Eddie, "Eddie,Murray", 25
When I read this in informatica, Murray is allocated in the age column and load gets failed as age is defined as number.
Is there way I can handle this? CSV file is correct as it is having double quotes by differentiating as it is single value for last name. I am not sure how to handle this in informatica. I have tried possible option and but couldn't figure out. Any idea?
Text qualifier of the source should be double quotes.
open infa session > go to mapping tab > then go to sources and select the source > then select file properties > And you will see advanced window like this screenshot 1. Once you click on advanced tab, it opens window 2. Make sure optional quotes is selected like the picture - double quotes.

Strategy to load a set of files in Talend

I want to know which is best strategy to aboard the following problem in Talend:
I need to load data from a set of delimited files that are stored in a directory with names like (SAMPLE1.DAT, SAMPLE2.DAT, ... , SAMPLEX.DAT)
The target will be a table in a MySQL database
I have to load all data at once because after this task I need to work with all records in the same table
I'm a bit confused because I don't know if it possible in Talend. I was seeing the tFileInputDelimited component but I didn't find the way to solve it.
Thanks
To read several files from one directory, you would use the tFileList component. It allows you to specify a directory and a file name pattern. All files in the directory matching the pattern will be processed, one after the other.
You need to use an "Iterate" link from the tFileList component to those components that describe what you want to do with each file. In your case, you would start with a tFileInputDelimited component (read the file) and connect the main output of that to a tMysqlOutput component. The MySQL component will, by default, just append the data to an existing table, so that should get you the result you want.
In the tFileInputDelimited component, you would not use a fixed filename, but a variable filename which is set by the tFileList component for each iteration (your loop variable, so to speak of). The name of that loop variable can be seen in the "outline" view in the studio, usually in the bottom left corner.
You would use components tFileInputDelimited into tMap (optional) into tmysqlOutput
Step 1 : configure some components like this, except you will use the delimited file input:
Step 2 : configure the component settings for the delimited file, click the disk for the wizard :
Step 3 : configure your database by right clicking on Db Connection under metadata, then following wizard:
Step 4 : Right click on each component and choose Row > Main > drag to next step in flow.
Step 5 : Open your tMap and map the columns from the file schema to the database schema.
Step 6 : Run the job, it should work if you have followed all the wizard, if there are errors just hover over the red component and it usually describes errors pretty well. You will see as the job runs how many records it has transferred.
Step 7 : after you have made it that far, create a tfiledelimited output with the same schema as the input, right click on the input choose Row > Rejects and drag that to the new delimited output, this is where and records that are rejected by the tmap will be sent.

Resources