Lo siento si esta pregunta ya se ha hecho, pero no pude encontrarla en ningún lado. Tengo una tabla que almacena archivos como BLOBS. La columna que contiene el archivo es un tipo de datos de imagen. Me gustaría poder extraer los datos binarios de la columna y convertirlos en un archivo real. Idealmente, me gustaría poder hacer esto con BCP o con el estudio de administración si es posible.¿Cómo uso BCP o Sql Server Management Studio para obtener datos BLOB de SQL Server?
He intentado con BCP, pero por alguna razón cuando intento sacar un documento de Office Word cree que está dañado. Esto es lo que he probado hasta ahora (obviamente, los valores han sido cambiados para proteger al inocente :):
bcp "select document_binary_data from database where id = 12345" queryout "c:\filename.doc" -n -S server -U username -P password
Esto no está funcionando, aunque? ¿Alguna idea?
Editar Resulta que no es necesario el distintivo nativo -n. Además, el BCP intenta incluir un prefijo de 4 bytes por defecto en la columna de la imagen - que realmente quiere este conjunto a 0.
bcp "select document_binary_data from database where id = 12345" queryout "c:\filename.doc" -S server -U username -P password
Enter the file storage type of field document_binary [image]: Enter prefix-length of field document_binary [4]: 0 Enter length of field document_binary [0]: Enter field terminator [none]:
que Aaron, que en realidad hacemos almacenar todos nuestros documentos en el sistema de archivos para el 95 % de nuestra aplicación. Sin embargo, hay un bit que todavía usa blobs :( – Eric
No necesita rellenar previamente el archivo de formato con la longitud del campo; lo siguiente funciona para mí (saltos de línea después de '9.0' y el siguiente' 1'): '9.0 1 SQLBINARY 0 0" "1 col1" "' – Geoff
@aaron - aparentemente hay muchos problemas con exportar varbinary (max) al archivo. (Acabo de terminar de hacerlo con C# - después de 3 horas tratando de hazlo con BCP). (El problema es con 'refix-length of field document_binary' que se debe establecer en' 0', pero requiere interacción del usuario). También se puede hacer con el archivo FMT, pero ¿qué ocurre si no tengo acceso al archivo FMT? ¿hay alguna manera de "usar en línea" el contenido fmt dentro del comando bcp? –