OPENROWSET, arquivos binários, varchars e varbinaries

1

Estou tentando carregar um arquivo binário no SQL Servidor , em um campo varbinary. Eu criei esta consulta para fazer isso:

INSERT INTO Files(File, Name)
SELECT
   "file.bin" AS Name
   * FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB) AS File
GO

mas estou recebendo este erro:

Implicit conversion from data type varchar to varbinary(max) is not allowed. Use the CONVERT function to run this query.

Se bem entendi, ele está lendo o arquivo como texto (varchar) enquanto é binário e deve ser armazenado como binário no varbinary. Temo que isso possa destruí-lo no processo, vai? e mesmo que não, como eu uso o método CONVERT?

    
por pupeno 07.07.2009 / 20:49

3 respostas

2

Colocar os dados na mesma ordem em que os campos fizeram funcionar (ou parecem funcionar, pelo menos):

INSERT INTO Files(File, Name)
SELECT
     * FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB) AS File
     "file.bin" AS Name
GO
    
por 07.07.2009 / 21:52
0

Eu nunca fiz isso sozinho, mas eu encontrei esta página mostrando o mesmo procedimento para inserir um jpg em um varbinaries ... a única diferença é o N antes do nome do caminho e nenhum switch AS

Espero que isso ajude, mas provavelmente esteja faltando alguma coisa relacionada à conversão

    
por 07.07.2009 / 21:25
0

Não sei por que isso está retornando uma coluna varchar. Parece o mesmo que o exemplo no msdn .

Eu não sei como você poderia converter essa coluna. Talvez ...

SELECT 
   convert(varbinary(max), * FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB)) AS File

Mas, eu estaria mais preocupado em ser um varchar quando você especifica SINGLE_BLOB.

    
por 07.07.2009 / 21:32