Mi dispiace se questa domanda è già stata fatta, ma non ho potuto trovarla da nessuna parte. Ho una tabella che memorizza i file come BLOB. La colonna che contiene il file è un tipo di dati immagine. Mi piacerebbe essere in grado di estrarre i dati binari dalla colonna e trasformarli in un file reale. Preferirei essere in grado di farlo con BCP o Management Studio, se possibile.Come utilizzare BCP o Sql Server Management Studio per estrarre i dati BLOB dal server Sql?
ho provato BCP, ma per qualche ragione quando cerco di tirare fuori un documento di Office Word pensa che sia corrotto. Ecco quello che ho provato finora (ovviamente i valori sono stati cambiati per proteggere l'innocente :):
bcp "select document_binary_data from database where id = 12345" queryout "c:\filename.doc" -n -S server -U username -P password
Questo non funziona però? qualche idea?
Modifica Risulta che non è necessario il flag -n nativo. Inoltre, BCP tenta di includere un prefisso 4 byte per impostazione predefinita per la colonna immagine - si vuole realmente questo set 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]:
I Aaron, che in realtà facciamo memorizzare tutti i nostri documenti sul filesystem per il 95 % della nostra applicazione. C'è un po 'che utilizza ancora blob però :( – Eric
Non c'è bisogno di precompilare il file di formato con la lunghezza del campo, i seguenti lavori per me (interruzioni di riga dopo '9.0' e il seguente' 1'): '9.0 1 SQLBINARY 0 0" "1 col1" "' – Geoff
@aaron - a quanto pare ci sono molti problemi con l'esportazione di varbinary (max) in file. (Ho appena finito di farlo con C# - dopo 3 ore di tentativi di fallo con BCP). (il problema è con 'refix-length of field document_binary' che dovrebbe essere impostato su' 0' - ma richiede l'interazione dell'utente.) Può anche essere fatto con il file FMT, ma cosa succede se non ho accesso al file FMT? C'è un modo per "utilizzare in linea" il contenuto fmt all'interno del comando bcp? –