Textfile in die Datenbank importieren
|
Seitenanfang |
Hallo an alle! Ich will ein Textfile (dnasequenz.txt)in die Datenbank bringen und zwar in eine Tabelle mit dem Namen Gen in die Spalte Sequenz.Ich arbeite unter Windows XP und habe es mit den Befehlen insert,mysqlimport,load data local infile etc. versucht- bin aber nicht im Stande es zu machen. Grüße Martin
Datum: 18.01.2006-12:35

|
re: Textfile in die Datenbank importieren
|
Seitenanfang |
| was steht denn in der Datei? Ein Datensatz, bzw. ein Feld eines Datensatzes? Oder viele Datensätze? Einer pro Zeile? Kannst Du ein Beispiel der Datei hier posten? Gruss, Sven
Datum: 18.01.2006-14:09

|
re: Textfile in die Datenbank importieren
|
Seitenanfang |
| CAGCGAGCAACTGAGAAGACTGGATAGAGCCGGCGGTTCCGCGAACGAGCAGTGACCGCGCTCCCACCCAGCTCTGCTCTGCAGCTCCCACCAGTGTCTACCCCTGGACCCCTTGCCGGGCTTTCCCCAAACTTCGACCATGATGTTCTCGGGTTTCAACGCCGACTACGAGGCGTCATCCTCCCGCTGCAGTAGCGCCTCCCCGGCCGGGGACAGCCTTTCCTACTACCATTCCCCAGCCGACTCCTTCTCCAGCATGGGCTCTCCTGTCAACACACAGGACTTTTGCGCAGATCTGTCCGTCTCTAGTGCCAACTTTA Das ist eine typische Darstellung einer Sequenz von einem Gen ( besteht eigentlich nur aus einer Abfolge von 4 Buchstaben (ATGC)).
Datum: 18.01.2006-15:21

|
re: Textfile in die Datenbank importieren
|
Seitenanfang |
Bin einen großen Schritt weiter. Mit update gene(Tabellenname) set Sequenz (Spaltenname)='sequenz.txt' where Name (Spaltenname) ='Fos'; Einziges Problem bleibt noch zu lösen- er schreibt mir sequenz.txt auf meinen gewünschten Platz und nicht den Inhalt von sequenz.txt vielen Dank nochmals Martin
Datum: 19.01.2006-10:00

|
re: Textfile in die Datenbank importieren
|
Seitenanfang |
| Du hattest meine Frage nicht beantwortet: Steht in dem File genau eine Sequenz (also 1 String), der in einer Tabelle in einem Datensatz in ein Feld geschrieben werden soll? Was Dein letztes Posting betrifft: Woher soll MySQL wissen, dass 'sequenz.txt' sich auf eine Datei bezieht. Es denkt (ganz korrekt), dass Du den string sequenz.txt in die Datenbank schreiben willst und macht das auch. Ich bin mir nicht sicher, ob das mit dem mysql command-line client überhaupt geht. Was Du machen könntest (was auch mit Perl zu tun hätte ;-)), wäre entweder Deine Datei mit Perl in gültigen SQL Code umzubauen und dann per > an mysql zu übergeben, oder das DBI Modul benutzen, die Datei einlesen, eine Verbindung zum DB Server herstellen und eine entsprechende SQL Abfrage abzusetzen. Die müsste dann so in etwa heissen: update gene set Sequenz='ACGACGACG...' where Name ='Fos';
Gruss, Sven
Datum: 19.01.2006-10:12

|
re: Textfile in die Datenbank importieren
|
Seitenanfang |
es handelt sich um einen String, der genau in ein Feld geschrieben werden soll.Ich arbeite mit DBI und das funktioniert auch. Soweit mein Code:
#!c:\perl\bin\perl -w use DBI; use Bio::DB::RefSeq; $db = new Bio::DB::RefSeq; $seq1 = $db->get_Seq_by_id('NM_010234'); # RefSeq ID $seq2 = $db->get_Seq_by_acc('NM_010234'); # RefSeq ACC open OUTFILE,">sequenz.txt"; print OUTFILE $seq1->accession_number, "\n", $seq2->seq, "\n"; close(OUTFILE); $verbinden1="DBI:mysql:maus"; my$verbinden2="root"; my$verbinden3="martin"; my $dbh = DBI->connect( "$verbinden1","$verbinden2","$verbinden3") || die "Database connection not made: $DBI::errstr"; my$sql =qq(update gene set Sequenz="$seq2->seq" where Name='Fos-/-'); my$sth=$dbh->prepare($sql); $sth->execute();
Da schreibt er mir in das richtige Feld: Bio::Seq::RichSeq=HASH(0x233d02c)->seq
Datum: 19.01.2006-11:08

|
re: Textfile in die Datenbank importieren
|
Seitenanfang |
| Hi, OK, ich sehe, Du bist schon recht weit. Was ich nicht versthee, ist, wozu Du die Daten überhaput in das Textfile schreibst, bevor Du sie wiederum in die DB schreiben willst. Ein
my$sql = "update gene set Sequenz='" . $seq2->seq . "' where Name='Fos-/-'); my$sth=$dbh->prepare($sql); $sth->execute();
würde doch komplett reichen, oder? Eine Sache noch: Wenn der Datensatz bisher noch nicht existiert, musst Du ein INSERT machen, kein UPDATE. Könnte es daran liegen?Gruss, Sven
Datum: 19.01.2006-11:21

|
re: Textfile in die Datenbank importieren
|
Seitenanfang |
sorry, Fehler:
my$sql = "update gene set Sequenz='" . $seq2->seq . "' where Name='Fos-/-'";
" statt ) am Ende ;-) Sven
Datum: 19.01.2006-11:22

|
re: Textfile in die Datenbank importieren
|
Seitenanfang |
Es funktioniert!!!! Die Sache mit dem Textfile speichern hat sich so ergeben,da ich einfach nur kontrollieren wollte ob das mit dem Sequenz holen überhaupt funktioniert. Eleganter und was ich noch probieren werde,ist die Daten direkt in die DB zu bringen. vielen, vielen Dank nochmal Martin
Datum: 19.01.2006-12:04

|