1
2
3
4
5
6
7
8
9
10
11
12
13
use utf8;
...
open(F_READ, "<encoding(ut8)", "test.txt") or next
while(defined(my $sz_line = <F_READ>))
{
@splitarr = split(/,/, $sz_line)
#Hier dann den SQL String zusammenbauen
$sql = ... , $splitarr[1] . $splitarr[2] ....
}
open(F_READ, "<","encoding(ut8)", "test.txt")
2012-09-05T14:17:41 lichtkind
open(my $f_read, '<:encoding(UTF-8)', 'test.txt') or die "Failed to open file: $!";
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
#!/usr/local/ActivePerl-5.10/bin/perl
use strict;
use DBI;
use utf8;
#no utf8;
use Encode;
binmode STDIN , 'utf8';
my $gazetteer_txt_datei="/Shared\ Items/Public/Datenbanken/Gazetteer/test.txt";
my $gazetteer_quellDateiname = "< ";
my $sz_line;
my @split_line;
my @split_sql;
my $sz_test_mysql;
my $sql_string;
$gazetteer_quellDateiname = $gazetteer_quellDateiname . $gazetteer_txt_datei;
open (F_READ,"<:encoding(utf8)", $gazetteer_txt_datei)
or next;
while(defined (my $sz_line = <F_READ>))
{
chomp($sz_line);
$sz_line =~ s/'/\\'/g;
$sz_line =~ s/,,,,/\,' ',' ',' ',/g;
$sz_line =~ s/,,,/\,' ',' ',/g;
$sz_line =~ s/,,/\,' ',/g;
@split_line = split(/\t/,$sz_line);
$sql_string = "INSERT INTO location (RC, UFI, UNI, LAT, LON, FC, PC, LC, SHORT_FORM, GENERIC, SORT_NAME_RO, FULL_NAME_RO, FULL_NAME_ND_RO, SORT_NAME_RG, FULL_NAME_RG, FULL_NAME_ND_RG, MODIFY_DATE)";
$sql_string = $sql_string . " values (". $split_line[0] . "," . $split_line[1] . "," . $split_line[2] . "," . $split_line[3] . "," . $split_line[4] . ",'" . $split_line[9] . "'," . $split_line[11] . ",'" . $split_line[18] . "','" . $split_line[19] . "','" . $split_line[20] . "','" . $split_line[21] . "','" . $split_line[22] . "','" . $split_line[23] . "','" . $split_line[24] . "','" . $split_line[25] . "','" . $split_line[26] . "','" . $split_line[28] . "');";
}
close(F_READ);
exit 0;
1
2
3
1 -1307834 -1891810 12.516667 -69.983333 123100 -695900 19PCP9315983885 ND19-14 P PPLL AA 00 N PAVIA Pavía Pavia PAVIA Pavía Pavia 1993-12-21
1 -1307889 -1891862 12.566667 -70.033333 123400 -700200 19PCP8774789436 ND19-14 P PPL AA 00 V SANTAANNA Santa Anna Santa Anna SANTAANNA Santa Anna Santa Anna 1993-12-21
3 11413039 13472634 25.235017 55.278831 251406 551644 40RCN2663292082 NG40-09 S RDCR AE 03 NS ara دوار دوارالسطوه دوار السطوه دوار السطوه دوارالسطوه دوار السطوه دوار السطوه 2012-01-26
1
2
3
INSERT INTO location (RC, UFI, UNI, LAT, LON, FC, PC, LC, SHORT_FORM, GENERIC, SORT_NAME_RO, FULL_NAME_RO, FULL_NAME_ND_RO, SORT_NAME_RG, FULL_NAME_RG, FULL_NAME_ND_RG, MODIFY_DATE) values (4,-3381460,9260417,32.990414,66.316794,'P',' ','rus','','','KHUSHKKHOY','Khushkkhoy','Khushkkhoy','KHUSHKKHOY','Khushkkhoy','Khushkkhoy','2010-05-05');
INSERT INTO location (RC, UFI, UNI, LAT, LON, FC, PC, LC, SHORT_FORM, GENERIC, SORT_NAME_RO, FULL_NAME_RO, FULL_NAME_ND_RO, SORT_NAME_RG, FULL_NAME_RG, FULL_NAME_ND_RG, MODIFY_DATE) values (4,-3381460,6411842,32.990414,66.316794,'P',' ','fas','','','05-خوشخوی','خوشخوی','خوشخوی','خوشخوی','خوشخوی','خوشخوی','2010-05');
dbh->do($sql_string);
2012-09-06T10:45:28 RaubtierVerstehe ich das richtig, dass die Quelldatei schon, wenn arabische Zeichen drin vorkommen, eine völlig andere Reihenfolge hat als die anderen? Dann musst du halt:
1. Arabische Zeilen erkennen
2. Die Reihenfolge der Fehler umdrehen
3. Auch das Datum ist ja verkehrt herum
4. Dann erst einfügen.
Darauf das es vielleicht mal wieder so einfach sein kann, bin ich leider nicht selbst gekommen.
Und zweiter Kommentar:
Was hat der Backslash in my $gazetteer_txt_datei="/Shared\ Items/Public/Datenbanken/Gazetteer/test.txt"; zu suchen?
1
2
3
4
5
6
7
8
9
10
$ perl -wE'
use Data::Dumper;
local $Data::Dumper::Useqq = 1; # zur sicherheit, um alle nicht druckbaren zeichen auszugeben
my $x = "foo\ bar";
my $y = "foo bar";
say Dumper $x;
say Dumper $y;'
$VAR1 = "foo bar";
$VAR1 = "foo bar";