que - Cómo insertar un blob en una base de datos utilizando el estudio de administración de servidores SQL
cuál es el tamaño máximo de la base de datos en ms sql server que se puede hospedar en amazon aws (6)
¿Necesitas hacerlo desde mgmt studio? Así es como lo hacemos desde la línea cmd:
"C: / Archivos de programa / Microsoft SQL Server / MSSQL / Binn / TEXTCOPY.exe" / S <Servidor> / D <Base de datos> / T mytable / C mypictureblob / F "C: / picture.png" / W "donde se indica = "/ I
¿Cómo puedo insertar fácilmente un blob en un campo varbinary (MAX)?
por el bien del argumento:
Supongo que lo que quiero insertar es: c: / picture.png la tabla es mytable la columna es mypictureblob y el lugar es recid = 1
He estado buscando en Google por un tiempo y no puedo encontrar una solución simple
¡Gracias!
Hay dos formas de SELECCIONAR un BLOB con TSQL:
SELECT * FROM OPENROWSET (BULK ''C:/Test/Test1.pdf'', SINGLE_BLOB) a
Tanto como:
SELECT BulkColumn FROM OPENROWSET (BULK ''C:/Test/Test1.pdf'', SINGLE_BLOB) a
Anote el nombre de correlación después de la cláusula FROM, que es obligatorio.
Luego puede hacer esto para INSERTAR haciendo un INSERT SELECT.
También puede usar la segunda versión para realizar una ACTUALIZACIÓN como lo describí en Cómo actualizar un BLOB en el SERVIDOR SQL utilizando TSQL .
MSDN tiene un artículo que trabaja con tipos de valores grandes , que trata de explicar cómo funcionan las partes importadas, pero puede resultar un poco confuso ya que hace 2 cosas simultáneamente.
Aquí estoy proporcionando una versión simplificada, dividida en 2 partes. Supongamos la siguiente tabla 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 ejecuta (en SSMS):
SELECT * FROM OPENROWSET (BULK ''C:/Test/TestPic1.jpg'', SINGLE_BLOB) AS X
se mostrará, que el resultado se ve como una tabla con una columna llamada BulkColumn
. Por eso puedes usarlo en INSERTAR como:
INSERT [Thumbnail] ( Data )
SELECT * FROM OPENROWSET (BULK ''C:/Test/TestPic1.jpg'', SINGLE_BLOB) AS X
El resto es simplemente encajándolo en un inserto con más columnas, que su tabla puede o no tener. Si nombra el resultado de ese select FOO
entonces puede usar SELECT Foo.BulkColumn
y as
después de esas constantes para otros campos en su tabla.
La parte que puede ser más complicada es cómo volver a exportar esos datos a un archivo para que pueda verificar que aún está bien. Si lo ejecutas en la línea cmd:
bcp "select Data from B2B.dbo.Thumbnail where Id=1"
queryout D:/T/TestImage1_out2.dds -T -L 1
Comenzará a quejarse por 4 "parámetros" adicionales y dará valores predeterminados engañosos (lo que resultará en un archivo modificado). Puede aceptar el primero, establecer el 2º en 0 y, a continuación, repetir el 3º y el 4º, o para ser explícito:
Ingrese el tipo de almacenamiento de archivos del campo Datos [varbinary (max)]:
Introduzca prefijo-longitud del campo Datos [8]: 0
Introduzca la longitud del campo Datos [0]:
Introduzca el terminador de campo [ninguno]:
Entonces preguntará:
¿Desea guardar esta información de formato en un archivo? [S / n] y
Nombre de archivo del host [bcp.fmt]: C: / Test / bcp_2.fmt
La próxima vez que lo -f C:/Test/bcp_2.fmt
, agrega -f C:/Test/bcp_2.fmt
y dejará de lloriquear :-) Ahorra mucho tiempo y dolor.
Ok ... esto me tomó demasiado tiempo. La herramienta de estudio de gestión de SQL no está a la altura de cosas simples como esta (como he notado antes al buscar dónde configurar el tiempo de espera en las consultas, y se realizó en 4 ubicaciones diferentes)
Descargué otro paquete de editor de sql (sql maestro en mi caso). Y he aquí que incluye un editor de blobs donde puedes mirar blobs y cargar nuevos blobs en estos campos.
¡Gracias por el aporte!
Puede insertar en un campo varbinary (max) usando T-SQL dentro de SQL Server Management Studio y en particular usando el comando OPENROWSET.
Por ejemplo:
INSERT Production.ProductPhoto
(
ThumbnailPhoto,
ThumbnailPhotoFilePath,
LargePhoto,
LargePhotoFilePath
)
SELECT ThumbnailPhoto.*, null, null, N''tricycle_pink.gif''
FROM OPENROWSET
(BULK ''c:/images/tricycle.jpg'', SINGLE_BLOB) ThumbnailPhoto
Eche un vistazo a la siguiente documentación para ver un buen ejemplo / tutorial
Trabajar con tipos de gran valor
Tenga en cuenta que la ruta del archivo en este caso es relativa al servidor SQL objetivo y no a su cliente que ejecuta este comando.
Sin embargo, simplemente puede leer un archivo del disco en la máquina del servidor SQL:
select * from openrowset (bulk ''c:/path/filename.ext'',single_blob) a
Para verlo en la aplicación de gestión en forma hexadecimal (Management Studio).
Por lo tanto, puede, por ejemplo, hacer una copia de seguridad de la base de datos en un archivo (localmente en el servidor) y luego descargarla en otro lugar mediante la declaración anterior.