Schrift
[thread]3803[/thread]

Ascii-file in mysql einpflegen ?



<< >> 5 Einträge, 1 Seite
Gast Gast
 2007-04-25 12:14
#35408 #35408
Ich möchte gerne ein ACSII File mit Perl in eine bestehende DB importieren
Das ASCII-File (mailadress.txt) sieht folgendermassen aus:

1008#test.tester@aaa.bbbb.de.example
1008#test2.tester@bbb.de.example                                       

1008=feld01
mailadresse=feld13

Die dazugehärige DB hat folgende Struktur:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| feld01       | varchar(8)   | NO   |     |         |       |
| feld02       | varchar(40)  | NO   | PRI |         |       |
| feld03       | varchar(16)  | NO   | PRI |         |       |
| feld04       | varchar(64)  | NO   | PRI |         |       |
| feld05       | varchar(32)  | NO   | PRI |         |       |
| feld06       | varchar(32)  | NO   | PRI |         |       |
| feld07       | varchar(32)  | NO   | PRI |         |       |
| feld08       | varchar(32)  | NO   | PRI |         |       |
| feld09       | varchar(16)  | YES  |     | NULL    |       |
| feld10       | varchar(16)  | NO   | PRI |         |       |
| feld11       | varchar(3)   | NO   | PRI |         |       |
| feld12       | varchar(2)   | NO   |     |         |       |
| feld13       | varchar(256) | YES  |     | NULL    |       |
| feld14       | varchar(128) | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+


Die beiden Einträge aus mailadress.txt sollen nun in die vorhandenen DB eingepflegt werden.
Da sich die Einträge täglich ändern können, würde ich das gerne nachts im cronjob einmal laufen lassen.

Leider habe ich keinerlei Ahnung, wie man sowas machen kann und bin absoluter Anfänger in Sachen Perl und MYSQL

Es wäre super, wenn mir jemand ein paar gute Tipps geben könnte !

edit pq: code-tags hinzugefügt, email-adressen RFC 2606-konform gemacht\n\n

<!--EDIT|pq|1177511789-->
pktm
 2007-04-25 14:27
#35409 #35409
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ungetestet und unvollständig und unschön:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    use FileHandle;
use DBI;
my $dbh = connect2db();
my $file = "blubb.txt";
my $fh = new FileHandle;
if ($fh->open("< $file")) {

while( $fh->getline() ) {
my ($feld1, $feld13) = split/\#/, $_);
my $sql = qq~
INSERT INTO Tabelle ..... $feld1, $feld13
~;
# statement wie in DBI.pm beschrieben ausführen
}

$fh->close();
}else{
# fehlermeldung...
}
http://www.intergastro-service.de (mein erstes CMS :) )
Froschpopo
 2007-04-25 18:29
#35410 #35410
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
sowas geht auch mit mysqlimport... das berücksichtigt noch mögliche charsetkonflikte..
Mit --fields-terminated-by=# musst du dann noch den trenner angeben
pktm
 2007-04-25 20:52
#35411 #35411
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Was macht mysql-import bei den Feldern, die nicht NULL sein dürfen und keinen Default-Wert besitzen?
So wie ich das jetzt gelesen habe stehen in der Datei nur 2 von den 14 Feldern.
http://www.intergastro-service.de (mein erstes CMS :) )
nepos
 2007-04-25 22:21
#35412 #35412
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
mysqlimport kannst du eine Spaltenliste mitgeben. Wenn du also nur wenige Spalten in der Textdatei hast, gibst du die in entsprechender Reihenfolge mit.
<< >> 5 Einträge, 1 Seite



View all threads created 2007-04-25 12:14.