DATETIME und CSV Import bei mysql
schwirz.linux-ag at freenet.de
schwirz.linux-ag at freenet.de
Sa Mär 7 10:14:11 CET 2009
Rene Lange schrieb:
>> Anno domini 2009 Rene Lange scripsit:
>
>>> Hat jemand eine Idee, das Format automatisch richtig zu setzen, ohne
>>> großen Aufwand? Es sind viele Dateien mit vielen Zeilen...
>
> a) mysqldump benutzen
> b) Ein kleines Perlskript basteln, was das heile macht.
> (Ich hatte hier gerade schon einen sed Einzeiler stehen, allerdings
> könnte das damit in die Hose gehen ob der '09' -> '2009'
> Transition, wenn auch Daten mit '98' oder so dabei sind. Daher
> perl.)
> c) phpmyadmin fixen.
>
> Es gibt leider keine Option neben phpmyadmin. Es ist ein Hoster :/
> Werde wohl doch nicht drumrum kommen, die CSV Datei in ein PHP Skript zu
> laden und dort zu verarbeiten.
>
>
> Danke dennoch!
>
Hallo Rene,
ich habe hier mal ein kleines Perl- Skript für dich und hoffe das du es
gebrauchen kannst:
---Convert-Date.pl---
#! /usr/bin/perl # Mein Perl ist hier installiert :-)
# Konvertiere ein Datum in ein anderes Format. TT.MM.JJ hh:mm ->
JJJJ-MM-TT hh:mm
# print "Aufrufparameter: " . join(';', @ARGV) . "n";
my $Date = $ARGV[0]." ".$ARGV[1];
# Tage . Monate . Jahre _ Stunde : Minute->JJ-MM-TT hh:mm
if ($Date =~ s/(d{2}).(d{2}).(0d{1})s(d{2}):(d{2})/20$3-$2-$1
$4:$5/) { # Jahre = 00, 01, 02 ..09 -> 20xx
} elsif ($Date =~
s/(d{2}).(d{2}).(d{2})s(d{2}):(d{2})/19$3-$2-$1 $4:$5/) { #
alle anderen Jahre (10..99) -> 19xx
} else {
print "# Ungültiger Wert! ";
}
print $Date."n";
---
So sieht's dann aus:
$> ./Convert-Date.pl 28.02.96 23:15
1996-02-28 23:15
$> ./Convert-Date.pl 28.02.09 23:15
2009-02-28 23:15
Wenn du das ganze dann noch ein wenig eleganter haben willst, kannst du
ja noch eine Schleife um den If+Print- Block herum legen und anstatt der
Auswertung der Aufrufparameter ($ARGV) eine Datei oder die
Standardeinabe (<STDIN>) verarbeiten.
Dürfte dann in etwa so aussehen:
# ...
open (INFILE, "<" . $SourceFile) or die 'Kann Eingabedatei (' .
$SourceFile . ') nicht öffnen!n';
@MyText = <INFILE>;
foreach $Date (@MyText) {
# siehe oben ...
}
close(INFILE);
# Ende
Heute schon ge"freeMail"t?
Jetzt kostenlose E-Mail-Adresse sichern!
http://email.freenet.de/dienste/emailoffice/produktuebersicht/basic/mail/index.html?pid=6831
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : Convert-Date.pl
Dateityp : application/octet-stream
Dateigröße : 560 bytes
Beschreibung: nicht verfügbar
URL : http://www.tlug.de/pipermail/tlug_allgemein/attachments/20090307/4f5554ff/attachment.obj