Principales respuestas
Subir archivo a una tabla

Pregunta
-
Estimados.
Desde Management necesito subir unos archivos word y luego poder "descargarlo"
Para pruebas tengo la tabla A con un campo archivo de tipo VARBINARY MAX
Hago esto:
BULK INSERT A
FROM 'C:\TEST\TEST.txt';
GOY me da error:
Error de conversión de datos de carga masiva (tipo no coincidente o carácter no válido para la página de códigos especificada) en la fila 1, columna 1 (archivo).
Supongo que es otra la forma de subir un archivo.
DBA SQL Server Santiago/Chile
Respuestas
-
Hola CMAPM:
CREATE TABLE Archivos (Id INT, descripcion VARCHAR(50) NOT NULL, documento VARBINARY(MAX) NOT NULL ); GO BEGIN TRY INSERT INTO Archivos (Id, descripcion, documento ) SELECT 1, 'ejemplo', BulkColumn FROM OPENROWSET(BULK 'C:\archivos\texto.txt', SINGLE_BLOB) AS documento; END TRY BEGIN CATCH PRINT 'error'; END CATCH; SELECT * FROM Archivos;
Salida:
Un saludo
- Marcado como respuesta CMAPM jueves, 27 de septiembre de 2018 17:38
-
Hola CMAPM:
Puedes hacerlo por medio de BCP
Cmd:
Bcp "select documento from basedatos.dbo.Archivos where id=1" queryout "c:\ruta\nombrearchivo.txt" -T
BCP nos preguntará el tipo de almacenamiento varbinary(max): enter
Longitud del prefijo del documento (8): 0
Longitud del campo del documento (0): enter
Escriba el terminador del campo: enter
Desea guardar la información en un archivo [s/n]: s
Salida:
Bcp dispone de infinidad de parámetros, que puedes consultar, para hacer exportaciones masivas
Espero te ayude
- Marcado como respuesta CMAPM viernes, 28 de septiembre de 2018 12:49
Todas las respuestas
-
Hola,
¿Es muy necesario que lo subas desde sql? En caso contrario podrías hace un pequeño programa en consola para elegir un archivo y luego obtener los bytes y estos enviarlos a tu tabla.
Podrías hacer algo similar a esto:
-
Hola CMAPM:
CREATE TABLE Archivos (Id INT, descripcion VARCHAR(50) NOT NULL, documento VARBINARY(MAX) NOT NULL ); GO BEGIN TRY INSERT INTO Archivos (Id, descripcion, documento ) SELECT 1, 'ejemplo', BulkColumn FROM OPENROWSET(BULK 'C:\archivos\texto.txt', SINGLE_BLOB) AS documento; END TRY BEGIN CATCH PRINT 'error'; END CATCH; SELECT * FROM Archivos;
Salida:
Un saludo
- Marcado como respuesta CMAPM jueves, 27 de septiembre de 2018 17:38
-
-
Hola CMAPM:
Puedes hacerlo por medio de BCP
Cmd:
Bcp "select documento from basedatos.dbo.Archivos where id=1" queryout "c:\ruta\nombrearchivo.txt" -T
BCP nos preguntará el tipo de almacenamiento varbinary(max): enter
Longitud del prefijo del documento (8): 0
Longitud del campo del documento (0): enter
Escriba el terminador del campo: enter
Desea guardar la información en un archivo [s/n]: s
Salida:
Bcp dispone de infinidad de parámetros, que puedes consultar, para hacer exportaciones masivas
Espero te ayude
- Marcado como respuesta CMAPM viernes, 28 de septiembre de 2018 12:49