Wie BLOB-Feld (Varchar(max) per SQL aktualisieren?

10/03/2009 - 12:03 von Hans Peters | Report spam
Hallo NG,

habe folgendes Problem, und stehe da ziemlich auf dem Schlauch:

In einer Tabelle Namens 'Importtab' habe ich ein varchar(max)-Feld Namens
'DatInhalt', in dem die Inhalte verschiedener Dateien gespeichert sind,
z.Zt. XML und PDF, andere sollen dazu kommen. Nun stehe ich vor dem
Problem, das in einem bestehenden Datensatz der Inhalt von 'DatInhalt'
gegen eine anderen Dateiinhalt ausgetauscht werden soll. Dies sollte, da
es (vorerst) nur ein einmaliger Vorgang ist, im SQL-Server Management
Studio per SQL-Script möglich sein. Geht das überhaupt, und wenn ja wie?
Oder habe ich andere, einfache Möglichkeiten? Alle anderen Felder kann
ich direkt bearbeiten, nur beim 'Datinhalt' geht das nicht, auch kein
Drag and Drop. Oder übersehe ich da etwas?

Tabelle Importtab:

ID as Integer
Dateiname as varchar(50)
DatInhalt as varchar(max)

Die einzufügende Datei ist "C:\Test.PDF" bei ID 47


Gruß

Hans
 

Lesen sie die antworten

#1 Elmar Boye
10/03/2009 - 16:44 | Warnen spam
Hallo Hans,

"Hans Peters" schrieb ...
In einer Tabelle Namens 'Importtab' habe ich ein varchar(max)-Feld Namens 'DatInhalt', in dem die Inhalte verschiedener Dateien
gespeichert sind, z.Zt. XML und PDF, andere sollen dazu kommen.



Da das nicht alles Textdaten sind verwende dafür besser ein
VARBINARY(MAX), sonst bekommst Du nur Konvertierungsprobleme,
wenn der SQL Server das als (ANSI)Zeichen behandelt.

Problem, das in einem bestehenden Datensatz der Inhalt von 'DatInhalt' gegen eine anderen Dateiinhalt ausgetauscht werden soll.
Dies sollte, da es (vorerst) nur ein einmaliger Vorgang ist, im SQL-Server Management Studio per SQL-Script möglich sein. Geht das
überhaupt, und wenn ja wie?



Am einfachsten wàre hier OPENROWSET(BULK):
http://msdn.microsoft.com/de-de/lib...90312.aspx

CREATE TABLE dbo.Tabelle (
id int NOT NULL PRIMARY KEY,
daten varbinary(max) NULL);
GO
INSERT INTO dbo.Tabelle (id, daten)
VALUES(4711, CAST('Ein Platzhalter' AS varbinary(max)));
GO

UPDATE dbo.Tabelle
SET daten = (SELECT * FROM OPENROWSET(BULK
N'F:\DOWNLOAD\Framework Design Guidelines-Digest.pdf', SINGLE_BLOB) AS Daten)
WHERE idG11;

SELECT DATALENGTH(daten) FROM dbo.Tabelle

Gruß Elmar

Ähnliche fragen