Generierung von MySQL-UPDATE-Anweisungen mit BLOB-Bild-Daten

Bin ich zu schreiben versucht, eine SQL-Anweisung generiert ein SQL-Skript, das update ein BLOB-Feld mit einem BILD aus der Datenbank selektiert.

Dies ist, was ich habe:

select concat( 'UPDATE `IMAGE` SET THUMBNAIL = ', 
               QUOTE( THUMBNAIL ), 
               ' WHERE ID = ', ID, ';' ) as UPDATE_STATEMENT
  from IMAGE;

In der oben genannten THUMBNAIL ist ein BLOB-Feld mit raw-Bilddaten. Wenn ich das resultierende Skript bekomme ich die folgende Fehlermeldung:

ERROR at line 2: Unknown command '\\'.

Zuerst habe ich versucht dies, ohne die QUOTE () - Funktion, etwa so:

select concat( 'UPDATE `IMAGE` SET THUMBNAIL = \'', 
               THUMBNAIL, 
               '\' WHERE ID = ', ID, ';' ) as UPDATE_STATEMENT
  from IMAGE;

Läuft das resultierende Skript erzeugt diese Fehlermeldung:

ERROR at line 2: Unknown command '\0'.

Was ist die richtige Funktion zu übernehmen, um das BLOB-Feld in der select -, so dass die UPDATE-Anweisungen funktionieren???

Wenn Kontext erforderlich ist, bin ich auf der Suche migrieren generierten Miniaturansichten auf einem server zum anderen server für bestimmte Bild-IDs nur. Ich würde mysqldump, aber ich will keine Klamotten auf die gesamte Tabelle.

Jede Hilfe wird sehr geschätzt!

  • Ich sollte erwähnen, dass ich weiß, dies ist möglich, da mysqldump erzeugen kann SQL INSERT-Anweisungen enthalten, die BLOB-Daten, aber ich bin mir nicht sicher, welche Funktion verwendet wird, um zu entkommen, die Daten ordnungsgemäß.
  • Haben Sie einen Blick auf, wie mysqldump entweicht die Zeichenfolgen intendes einfügen als BLOB?
  • Ich schaute auf den C-code, aber ich kann nicht ausmachen, was es tut. Wenn ich sehe das resultierende SQL, es werden keine Funktionen aufgerufen, die den string beim einfügen. Es erscheint nur ein dump des blob-Felds mit single-quotes escaped von blackslashes. Ich arbeite mit REPLACE (), um zu sehen, wie ich dies auf die wählen Sie.
InformationsquelleAutor Bob | 2010-04-13
Schreibe einen Kommentar