MSDN a un article qui Travaille Avec de Grands Types de Valeur
qui tente d'expliquer comment importer des œuvres, mais il peut être un peu déroutant, car il n'a que 2 choses ensemble. Donc voici une version simplifiée et cassé en 2 parties. Supposons tableau simple:
CREATE TABLE [Thumbnail](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Data] [varbinary](max) NULL
CONSTRAINT [PK_Thumbnail] PRIMARY KEY CLUSTERED
(
[Id] ASC
) ) ON [PRIMARY]
Si vous exécutez (dans SSMS):
SELECT * FROM OPENROWSET (BULK 'C:\Test\TestPic1.jpg', SINGLE_BLOB)
il va montrer que le résultat ressemble à une table avec une colonne nommée BulkColumn. C'est pourquoi vous pouvez l'utiliser dans les INSÉRER comme:
INSERT [Thumbnail] ( Data )
SELECT * FROM OPENROWSET (BULK 'C:\Test\TestPic1.jpg', SINGLE_BLOB)
Le reste est juste à côté d'elle en insertion avec plus de colonnes de votre tableau peut ou peut ne pas avoir. Si vous nommez le résultat od que select FOO, alors vous pouvez utiliser SELECT Foo.BulkColumn et le cul après que les constantes pour les autres champs de votre table.
Le poart qui peut obtenir plus délicat est de savoir comment exporter ces données dans un fichier de sorte que vous pouvez vérifier que c'est toujours OK. Si vous exécutez sur la ligne de cmd:
bcp "select Data from B2B.dbo.Thumbnail where Id=1" queryout D:\T\TestImage1_out2.dds -T -L 1
Il va commencer à pleurnicher pour 4 supplémentaires "params" et donnera trompeuse par défaut (whihc entraînera le fichier modifié). Vous pouvez accepter première, définir la 2e à 0 puis assept 3ème et 4ème, ou d'être explicite:
Enter the file storage type of field Data [varbinary(max)]:
Enter prefix-length of field Data [8]: 0
Enter length of field Data [0]:
Enter field terminator [none]:
Puis il vous demande:
Do you want to save this format information in a file? [Y/n] y
Host filename [bcp.fmt]: C:\Test\bcp_2.fmt
La prochaine fois, vous devez l'exécuter add-f C:\Test\bcp_2.fmt et il va arrêter de se plaindre :-)
Permet d'économiser beaucoup de temps et de chagrin.