Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Binary File --> MySQL
BeitragVerfasst: 08 Mai 2003, 16:58 
Offline
Nuby

Registriert: 08 Mai 2003, 16:44
Beiträge: 3
Heya, ich habe folgendes Problem:

Ich möchte binäre Files mit einer Filegröße zwischen 1Byte und 1GB mit Ruby in meine MySQL DB einfügen.

Als Interface zwischen Ruby und MySQL verwende ich die 'dbi' Schnittstelle. Connection zwischen MySQL und Ruby funktioniert.

Mein Ansatz war die Daten in folgender Form zu inserten:

sql = "INSERT INTO MovieDB_Movies (MovieFile) VALUES ('" + file + "')"

Nun gut. Nachdem mir in Ruby aber eine Funktion names addslashes (wie in php) abgeht, habe ich keine Ahnung wie ich die Filedaten für den Transfer in die DB aufbereiten soll. Vor allem kann ich mir vorstellen, dass die Filegröße ein Problem werden wird.

Was ich suche, ist die Art der Filemodifikation, die ich vornehmen muss bevor ich es 'inserten' kann. Hat hier schon jemand Erfahrungen?

yours
ruby n00b :oops:


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 12 Mai 2003, 01:41 
Offline
Meister

Registriert: 25 Jun 2002, 20:39
Beiträge: 276
Wohnort: Hamburg
MySQL besitzt ein BLOB Type.
Dabei handelt es sich um ein "binary large object".
Damit kannst du Binär Daten in der Datenbank ablegen.

Siehe -> http://www.mysql.com/doc/en/BLOB.html

Gruß, leobm


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 12 Mai 2003, 20:22 
Offline
Ex-Admin
Benutzeravatar

Registriert: 12 Mai 2003, 18:49
Beiträge: 890
Wohnort: Kiel
Moin!

Ich glaube, das Problem ist eher, dass in dem Binary ja auch durchaus Steuerzeichen wie z. B. ' oder \ vorkommen können, die ja auskommentiert werden müssen, damit die Daten erfolgreich eingefügt werden. Leider habe ich von Ruby noch keine Ahnung, aber ich würde es über reguläre Ausdrücke versuchen...

iGEL


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 19 Mai 2003, 12:56 
Offline
Nuby

Registriert: 08 Mai 2003, 16:44
Beiträge: 3
leobm hat geschrieben:
MySQL besitzt ein BLOB Type.
Dabei handelt es sich um ein "binary large object".
Damit kannst du Binär Daten in der Datenbank ablegen.

Siehe -> http://www.mysql.com/doc/en/BLOB.html

Gruß, leobm


jup, danke. den benutze ich eh; haette ich vielleicht der vollständigkeit halber dazuschreiben koennen!

lG

Matthias


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 19 Mai 2003, 12:58 
Offline
Nuby

Registriert: 08 Mai 2003, 16:44
Beiträge: 3
iGEL hat geschrieben:
Moin!

Ich glaube, das Problem ist eher, dass in dem Binary ja auch durchaus Steuerzeichen wie z. B. ' oder \ vorkommen können, die ja auskommentiert werden müssen, damit die Daten erfolgreich eingefügt werden. Leider habe ich von Ruby noch keine Ahnung, aber ich würde es über reguläre Ausdrücke versuchen...

iGEL


damit habe ich mich auch schon gespielt, war aber leider nicht sehr erfolgreich :? naja irgendwann werd' ich schon draufkommen ... wenn ich was erfahre, poste ichs hier ... vielleicht brauchts ja mal wer anderer!

lG

Matthias


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 27 Mai 2003, 23:45 
Offline
Ex-Admin
Benutzeravatar

Registriert: 12 Mai 2003, 18:49
Beiträge: 890
Wohnort: Kiel
Moin!

Ich beschäftige mich auch gerade mit Datenbanken und in der Doku hier stehts wies geht:
Zitat:
Ruby DBI provides a placeholder mechanism that allows you to avoid including data values literally in a query string. Instead, you use special markers within the statement to indicate where the data values go. When you execute the statement, you provide values to be bound to the placeholders. DBI substitutes the values into the statement where the placeholders appear, performing any quoting of string values and escaping of special characters as necessary. This makes it easy to construct statements without having to know whether or not the values contain special characters, and without having to do any quote processing yourself. The placeholder mechanism also properly handles NULL values; just provide nil as a data value and it will be placed into the statement as an unquoted NULL value.

The following example illustrates how this works. Suppose you want to add a new row to the people table for someone named Na'il (a name that includes a quote), who is 76 inches tall. To indicate where the data values go in the INSERT statement, use '?' placeholder markers (without any surrounding quotes), and provide the data values as additional arguments to do following the statement:

dbh.do("INSERT INTO people (id, name, height) VALUES(?, ?, ?)",
nil, "Na'il", 76)The resulting statement produced by do and sent to the server looks like this:
INSERT INTO people (id,name,height) VALUES(NULL,'Na\'il',76)


Ausprobiert hab ichs nicht, aber hört sich für mich genau nach deinem Problem an :) Habs hier her: http://www.kitebird.com/articles/ruby-dbi.html#TOC_1

iGEL


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: