Thread CSV Feldlänge bestimmen (16 answers)
Opened by sara456 at 2014-05-23 16:54

sara456
 2014-05-23 19:05
#175690 #175690
User since
2014-04-22
13 Artikel
BenutzerIn
[default_avatar]
Ich fange erstmal mit einlesen ein bevor ich die überprüfungen mache
Also ich habe eine CSV-Input Datei, das wie folg aussieht
Input.csv:
12;;654;Test;12345;Test
13;;265;Test;12345;Test

Mapping_CSV: ! ist dafür da, da die Stelle 2 in der Input_Datei leer ist.
Stelle Ziel_Stelle Laenge Typ
1 1 5 Numerisch
! 2 6 Numerisch
3 3 9 Numerisch
4 4 14 Alphanumerisch
5 5 5 Numerisch
6 6 28 Alphanumerisch
7 7 14 Alphanumerisch


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!C:/Programme/Perl

use strict;
my $input='Input.csv';
my $output='Output.csv';
my $mapping='Input_mapping.csv';
my $zeileDaten;
my @arrayDaten;
my $inputDaten;
my @inputarray;
my $semikolon=';';

open MAPPING, "<$mapping" or die "Datei $mapping konnte nicht geöffnet werden";
open INPUT, "<$input" or die "Datei $input konnte nicht geöffnet werden";
open Output, ">$output" or die "Datei $output konnte nicht geöffnet werden";
while (<MAPPING>){
chomp;

#print "$_\n";

$zeileDaten ="$_\n";


push(@arrayDaten,$zeileDaten);
}

close(MAPPING);

while (<INPUT>){
chomp;
$inputDaten ="$_\n";
@inputarray=split(/;/,$inputDaten);
foreach $mapping( @arrayDaten ) {
my ($Stelle, $ZielStelle,$Laenge, $Typ) = split(/;/,$mapping);
if ($Stelle eq "!"){
print Output "$semikolon";
} else {
print Output "@inputarray[$Stelle]$semikolon";
print "@inputarray[$Stelle]$semikolon";
}


}


}
close(INPUT);


Als Output erhalte ich nicht, was ich in Input hatte
Meine Output csv: Das verschiebst sich alles
12;2654; Test;Test Str:1;12345;Test
;;13;26542;;Test;Test Str:2;12345;Test
;;14;264624;;Test;Test Str:3;12345;Test
Last edited: 2014-05-23 19:08:08 +0200 (CEST)

View full thread CSV Feldlänge bestimmen