Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Залить большой файл в varbinary поле  [new]
Big17
Member

Откуда:
Сообщений: 680
Коллеги, подскажите, как залить большой файл в varbinary поле, причем файл располагается не на сервере, где крутиться сиквел, а на другом компе?
Соответственно OPENROWSET (BULK) не проходит (или подходит?). По сети файл тоже нельзя сделать доступным.
Размер файла - около 2 Гб.
26 фев 14, 10:21    [15630643]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
Big17
По сети файл тоже нельзя сделать доступным.

Вы хотите считать файл, не имея доступа к нему ??
26 фев 14, 10:23    [15630656]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Big17
Member

Откуда:
Сообщений: 680
Я хочу закачать файл со своего локального компа на сиквел.
У меня полный доступ и к файлу и к сиквелу.
26 фев 14, 10:26    [15630667]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Big17
Я хочу закачать файл со своего локального компа на сиквел.


1) шара
2) свой клиент для загрузки
26 фев 14, 10:27    [15630678]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
Big17
У меня полный доступ и к файлу и к сиквелу.

To use BULK INSERT or INSERT...SELECT * FROM OPENROWSET(BULK...) to bulk import data from another computer, the data file must be shared between the two computers. To specify a shared data file, use its universal naming convention (UNC) name, which takes the general form, \\Servername\Sharename\Path\Filename. Additionally, the account used to access the data file must have the permissions that are required for reading the file on the remote disk.
26 фев 14, 10:29    [15630689]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Big17
Member

Откуда:
Сообщений: 680
Шара отпадает
"Собственный клиент" - это реализация в котором будет использоваться какая-то SQL-конструкция.
Меня именно эта конструкция и интересует. Как?
26 фев 14, 10:30    [15630696]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
Big17
Как?

Что как ?
Как написать программу, которая сможет заносить данные в таблицу на mssql ?

Сообщение было отредактировано: 26 фев 14, 10:31
26 фев 14, 10:31    [15630706]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Big17
Member

Откуда:
Сообщений: 680
Меня именно эта конструкция и интересует. Как?


Как написать такую конструкцию, подскажите, если можете
26 фев 14, 10:32    [15630711]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
Big17
Как написать такую конструкцию, подскажите, если можете

Какую "такую" то ?
26 фев 14, 10:33    [15630713]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Big17
Member

Откуда:
Сообщений: 680
А если бы я знал, я бы сразу вторым постом на свой первый бы и ответил!
В первом спросил, во втором ответил, типа вот же она:
INSERT...
26 фев 14, 10:35    [15630726]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
Big17
А если бы я знал, я бы сразу вторым постом на свой первый бы и ответил!
В первом спросил, во втором ответил, типа вот же она:
INSERT...

Хелп окрыть не судьба ?

INSERT INTO myTable(FileName, FileType, Document) 
   SELECT 'Text1.txt' AS FileName, 
      '.txt' AS FileType, 
      * FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document;
26 фев 14, 10:36    [15630729]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Big17
Member

Откуда:
Сообщений: 680
Я попробую еще раз уточнить задачу.
Мне нужно с помощью какого-то SQL выражения, которое я бы запустил в среде SQL Server Management Studio, залить бинарный файл, расположенный на локальном компьютере на удаленный SQL Server.
Права есть на доступ и локальному файлу, и к удаленному сиквелу. У сиквела нет доступа по шаре к файлу на клиентском компе.
26 фев 14, 10:37    [15630737]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Big17
Member

Откуда:
Сообщений: 680
Glory,

Файл расположен на локальном компе...
насколько я понимаю, в вашем примере, файл будет браться с диска на СУБД сервере.
26 фев 14, 10:39    [15630743]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
Big17
насколько я понимаю, в вашем примере, файл будет браться с диска на СУБД сервере.

Вы ответы читаете ?
"To specify a shared data file, use its universal naming convention (UNC) name, which takes the general form, \\Servername\Sharename\Path\Filename"
26 фев 14, 10:40    [15630751]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Big17
Member

Откуда:
Сообщений: 680
Big17
Я попробую еще раз уточнить задачу.
......
У сиквела нет доступа по шаре к файлу на клиентском компе.
26 фев 14, 10:43    [15630767]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
Big17
Big17
Я попробую еще раз уточнить задачу.
......
У сиквела нет доступа по шаре к файлу на клиентском компе.

Еще раз уточню, как вы себе представляете доступ, не имея доступа ?
Сервер должен сам обойти защиту, взломать пароли и скачать файл ?

Сообщение было отредактировано: 26 фев 14, 10:47
26 фев 14, 10:46    [15630780]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Big17
Member

Откуда:
Сообщений: 680
На компе, с которого я выполняю инструкцию, доступ к этому файлу есть. К серверу тоже есть.

Можно конечно открыть этот файл как строку, и сделать инсерт с преобразованием CONVERT(varbinary, '0x0000000......', 1)
И на маленьких файлах это работает. Да и на больших вобщем-то тоже, но уж очень неэффективно с точки зрения используемых ресурсов.

Поэтому я и обратился за помощью к сообществу, подсказать альтернативный вариант.
26 фев 14, 10:49    [15630803]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
aleks2
Guest
Big17
Я попробую еще раз уточнить задачу.
Мне нужно с помощью какого-то SQL выражения, которое я бы запустил в среде SQL Server Management Studio, залить бинарный файл, расположенный на локальном компьютере на удаленный SQL Server.
Права есть на доступ и локальному файлу, и к удаленному сиквелу. У сиквела нет доступа по шаре к файлу на клиентском компе.


Не выйдет. Нет такого выражения.

OLEDB и прочие клиентские библиотеки MS SQL имеют методы загрузки файлов.
Так что надо хотя бы на VBA навоять десаток строчек.
26 фев 14, 10:49    [15630805]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
Big17
Можно конечно открыть этот файл как строку, и сделать инсерт с преобразованием CONVERT(varbinary, '0x0000000......', 1)
И на маленьких файлах это работает. Да и на больших вобщем-то тоже, но уж очень неэффективно с точки зрения используемых ресурсов.

Изучите ваш язык программирования.
Найдите в нем инструкции для передачи всего файла, как потока данных
26 фев 14, 10:52    [15630813]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Big17
Member

Откуда:
Сообщений: 680
Ок! Спасибо за ответ
26 фев 14, 10:52    [15630814]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Big17
"Собственный клиент" - это реализация в котором будет использоваться какая-то SQL-конструкция.
Меня именно эта конструкция и интересует. Как?


собственный клиент - это утилита (на чём умете писать)/скрипт (например на VB/PowerShell), который будет ваш локальный файл лить в БД
26 фев 14, 10:56    [15630835]     Ответить | Цитировать Сообщить модератору
 Re: Залить большой файл в varbinary поле  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31868
Big17
На компе, с которого я выполняю инструкцию, доступ к этому файлу есть. К серверу тоже есть.

Можно конечно открыть этот файл как строку, и сделать инсерт с преобразованием CONVERT(varbinary, '0x0000000......', 1)
И на маленьких файлах это работает. Да и на больших вобщем-то тоже, но уж очень неэффективно с точки зрения используемых ресурсов.

Поэтому я и обратился за помощью к сообществу, подсказать альтернативный вариант.
Можно сделать пакет SSIS, или использовать bcp.
26 фев 14, 20:43    [15635625]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить