Data load issue with delimiters

book

Article ID: 140629

calendar_today

Updated On:

Products

CA IT Asset Manager CA IT Asset Manager Asset Portfolio Management CA Software Asset Manager (CA SAM) ASSET PORTFOLIO MGMT- SERVER

Issue/Introduction

Raw data load job is failing with below error : “consumer->send(): failed. error: Send package failed; The receiving end has terminated.”

Cause

The error is caused because the character being used for the delimiter is also found in one of the strings, so splitting data into fields fails.


In this instance, the pipe character | is used as delimiter. However one of the lines has the product as

C++ | Visual Fortran Compiler XE 15.0 for Intel® 64

The extra pipe breaks the import. To identify the culprit we can scan the file for extra pipe characters. To do this, run this command in a bash shell:

sed 's/[^|]//g' import_file.csv | awk '{ print length; }' > lengths.txt

This is then creating a much smaller file that just has the number of pipe characters for the equivalent row on each line. A text reader that displays the current line number can then scan that for a 6, rather than the expected 5. In the original example where this was seen, the first example was like 208937. The command

sed -n -e 208937p sccm_inv_raw_arp.csv

displays the import entry at fault above.

Environment

Release : 4.3

Component : CSM - ASSET MANAGEMENT

Resolution

To resolve the problem, either ensure no imported products contain the character that is used as delimiter, or alternatively choose a new delimiter that does not exist in the product data.