Direct Pathloader strange Data

I am using delpi 5 Enterprise, Oracle 9i Client, Oracle 9i Database.
We are loading large amount of Data from CSV-Files into the Oracle Database, with the Direct Path Loader (DOA version 4.0.6.2)
Everything works fine, performance is good, but every import data field has a leading character like Ascii 1,4,5,3,6 :confused:
this character must be generated by the pathloader or oracle, any idea ???

thanks in advance
Michael
 
Hi Marco,

Thanks for your answer.

I dont think so. Here is a sample code:

  • declaration

    TPLRA_STRUKTUR_RowFormat = class(TCollectionItem)
    public
    PPL_User: string[50];
    PLORName: string[20];
    Fertigungswerk: string[20];
    Halle: string[20];
    Band: string[20];
    TKL: string[20];
    VF: string[20];
    VaterProdukt: string[20];
    WerksStruktur: string[20];
    Kind: string[20];
    Default: string[20];
    GruppeVon: string[20];
    GruppeBis: string[20];
    GruppeVerteil: string[20];
    GruppeProzent: string[20];
    end;
    .
    .
    .
    .

    while not Eof(tcsvFile) do begin
    Readln(tcsvFile,SourceStr);

    CSVParser.SourceString := SourceStr;

    with TPLRA_STRUKTUR_RowFormat.Create(vPLRA_STRUKTUR_Row) do begin
    PPL_User := vUserName;
    PLORName := CSVParser.FieldList.Strings[0];
    Fertigungswerk := CSVParser.FieldList.Strings[1];
    Halle := CSVParser.FieldList.Strings[2];
    Band := CSVParser.FieldList.Strings[3];
    TKL := CSVParser.FieldList.Strings[4];
    VF := CSVParser.FieldList.Strings[5];
    VaterProdukt := CSVParser.FieldList.Strings[6];
    WerksStruktur := CSVParser.FieldList.Strings[7];
    Kind := CSVParser.FieldList.Strings[8];
    Default := CSVParser.FieldList.Strings[9];
    GruppeVon := CSVParser.FieldList.Strings[10];
    GruppeBis := CSVParser.FieldList.Strings[11];
    GruppeVerteil := CSVParser.FieldList.Strings[12];
    GruppeProzent := CSVParser.FieldList.Strings[13];
    end;
    end;
    CSVParser.Free;

    try
    Row := 0;
    for i := 0 to vPLRA_STRUKTUR_Row.Count - 1 do
    begin
    loader.Columns[0].SetData(Row, @vPLRA_STRUKTUR_Row.PLORName,Length(vPLRA_STRUKTUR_Row.PLORName)+ cflk);
    loader.Columns[1].SetData(Row, @vPLRA_STRUKTUR_Row.Fertigungswerk,Length(vPLRA_STRUKTUR_Row.Fertigungswerk)+ cflk);
    loader.Columns[2].SetData(Row, @vPLRA_STRUKTUR_Row.Halle,Length(vPLRA_STRUKTUR_Row.Halle)+ cflk);
    loader.Columns[3].SetData(Row, @vPLRA_STRUKTUR_Row.Band,Length(vPLRA_STRUKTUR_Row.Band)+ cflk);
    loader.Columns[4].SetData(Row, @vPLRA_STRUKTUR_Row.TKL,Length(vPLRA_STRUKTUR_Row.TKL)+ cflk);
    loader.Columns[5].SetData(Row, @vPLRA_STRUKTUR_Row.VF,Length(vPLRA_STRUKTUR_Row.VF)+ cflk);
    loader.Columns[6].SetData(Row, @vPLRA_STRUKTUR_Row.VaterProdukt,Length(vPLRA_STRUKTUR_Row.VaterProdukt)+ cflk);
    loader.Columns[7].SetData(Row, @vPLRA_STRUKTUR_Row.WerksStruktur,Length(vPLRA_STRUKTUR_Row.WerksStruktur)+ cflk);
    loader.Columns[8].SetData(Row, @vPLRA_STRUKTUR_Row.Kind,Length(vPLRA_STRUKTUR_Row.Kind)+ cflk);
    loader.Columns[9].SetData(Row, @vPLRA_STRUKTUR_Row.Default,Length(vPLRA_STRUKTUR_Row.Default)+ cflk);
    loader.Columns[10].SetData(Row, @vPLRA_STRUKTUR_Row.GruppeVon,Length(vPLRA_STRUKTUR_Row.GruppeVon)+ cflk);
    loader.Columns[11].SetData(Row, @vPLRA_STRUKTUR_Row.GruppeBis,Length(vPLRA_STRUKTUR_Row.GruppeBis)+ cflk);
    loader.Columns[12].SetData(Row, @vPLRA_STRUKTUR_Row.GruppeVerteil,Length(vPLRA_STRUKTUR_Row.GruppeVerteil)+ cflk);
    loader.Columns[13].SetData(Row, @vPLRA_STRUKTUR_Row.GruppeProzent,Length(vPLRA_STRUKTUR_Row.GruppeProzent)+ cflk);
    loader.Columns[14].SetData(Row, @vPLRA_STRUKTUR_Row.PPL_User,Length(vPLRA_STRUKTUR_Row.PPL_User)+ cflk);
    loader.ColumnByName('timestamp').SetData(Row, @vTimeStamp,Length(vTimeStamp)+ cflk);
    Inc(Row);
    if (Row = Loader.MaxRows) or (i = vPLRA_STRUKTUR_Row.Count - 1) then
    begin
    try
    Loader.Load(Row);
    except
    on E:EOracleError do
    begin
    ShowMessage(E.Message + #13 +
    'Row = ' + IntToStr(Loader.LastRow) + #13 +
    'Col = ' + IntToStr(Loader.LastColumn));
    Loader.Abort;
    raise;
    end;
    end;
    Row := 0;
    end;
    end;
    Loader.Finish;
    finally
    Loader.Free;
    end;
    vPLRA_STRUKTUR_Row.Free;
 
For string values you need to pass a pointer to the first character (e.g. @vPLRA_STRUKTUR_Row.PLORName[1]). Otherwise you pass a pointer to the complete string structure, which is more than just the character data.
 
Back
Top