Как из sql выгрузить в svc файл

Сумашедшее IT

Как выгрузить бинарные данные из таблицы на диск?
Об этом уже много написано н разных ресурсах.Если кратко, то есть два способа выгрузки бинарных данных из таблицы на диск:

1. с помощью утилиты bcp
2. с помощью .NET

Мы поговорим о первом способе.

И вот сам скрипт, выгружающий данные из нужного поля и сохраняющий их на диск:

declare @cmd varchar(500)
declare @id uniqueidentifier
declare @reportname nvarchar(250)

declare report cursor
for select [ID] from Report where [SecurityLevel] = 0
open report
fetch next from report into @id
while @@fetch_status = 0
begin
set @cmd = ‘bcp «select cast([Data] as image) from IMReports.dbo.Report where [ID] = »’ + cast(@id as nvarchar(50)) + »'» queryout C:\’ + cast(@id as nvarchar(50)) + ‘.rpt -T -f C:\report.fmt’
exec xp_cmdshell @cmd
fetch next from report into @id
end
close report
deallocate report

Мы объявляем переменные для команды, ID текущей записи и названия. Далее, создается курсор, в котором мы получаем данные, добавляем их в команду и выполняем xp_cmdshell.
И так для каждой записи. После мы закрываем курсор и освобождаем его ресурсы. Вот так все просто, однако есть пара моментов, без которых данный скрипт не выполнится. Вот о них мы и поговорим ниже.

Прежде всего нам нужно выполнить несколько действий:

1. создать файл форматирования. Это текстовой или xml файл (по префиксу -x) в котором описана структура поля или полей таблицы из которой мы будем копировать.

создается он также с помощью утилиты bcp, но немного другой набор параметров. примерно так:

bcp IMReports.dbo.Report format nul -T -f c:\format.fmt

выделены важные особенности:
с помощью «format nul» вы указываете, что формата нет и вы собираетесь его создавать.
Ключ «-T» указывает на использование доверенного соединения. полезно, когда нет необходимости вводить логин/пароль.

после этого вам предложат указать верные данные по полям таблицы.

выделено целевое поле. обратите внимание на указание префикса длины равного 4 байтам.
Если вы оставите все как есть, то в начале каждого файла будет добавлено 4 байта, указывающих длину самих данных.

на выходе получится такой файл:
——report.fmt——
10.0
9
1 SQLUNIQUEID 1 16 «» 1 ID «»
2 SQLCHAR 2 250 «» 2 Name Cyrillic_General_CI_AS
3 SQLCHAR 2 4000 «» 3 Note Cyrillic_General_CI_AS
4 SQLTINYINT 0 1 «» 4 SecurityLevel «»
5 SQLDATETIME 0 8 «» 5 DateCreated «»
6 SQLDATETIME 0 8 «» 6 DateModified «»
7 SQLIMAGE 4 0 «» 7 Data «»
8 SQLUNIQUEID 1 16 «» 8 ReportFolderID «»
9 SQLBINARY 2 8 «» 9 RowVersion «»
—————————

10.0 — версия SQL сервера.
9 — количество полей.

Далее поля и в них:

1 — порядковый номер поля.
2 — тип данных.
3 — длина.
4 — максимальный размер поля.
5 — префикс окончания строки (для разделения данных, например, как в CSV)
7 — название поля.
8 — кодировка.

Нам нужны только данные из одного поля — Data, соответственно, изменяем этот файл. Убираем лишние поля, меняем их количество, порядковый номер и префикс длины (см. выше).

2. включить использование xp_cmdshell

begin
EXEC sp_configure ‘xp_cmdshell’,1
reconfigure with override;
end

Если при выполнении у вас вывалится подобная ошибка:

SQLState = S1000, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Unable to open BCP host data-file

это означает, что что-то препятствует записи файла, который вы выгружаете в указанном месте.
Убедитесь, что у Вас есть права на запись в данное место.

Выгрузка данных в текстовый файл из MS SQL Server 2008 клиентом Access 2003

Речь сегодня пойдет об экспорте данных, в текстовый файл формата txt, из базы MSSql 2008 используя, при этом клиент Access 2003. У многих реализована именно такая связка и как Вы понимаете для того, чтобы пользователь смог сам выгружать такие данные в такой формат нужно реализовать такую выгрузку в Access, чем мы сегодня и займемся.

Совсем недавно мы с Вами рассматривали возможность загрузки данных из текстового файла в базу MSSql 2008 через клиент Access 2003, а теперь пришло время посмотреть, как можно реализовать обратный процесс.

Структура текстового файла и данных в базе

И начнем мы с того, в каком виде нам нужно получить данные в текстовом файле, т.е. рассмотрим своего рода структуру этого файла и соответственно структуру таблицы, из которой мы будем выгружать данные, в качестве источника может быть не обязательно таблица, а любой запрос, под который можно будет подстроить свой код на VBA для выгрузки данных.

В ней у нас будут вот такие данные:

Скриншот 1

А нам необходимо выгрузить данные в текстовый файл вот в таком виде:

Скриншот 2

Примечание! Для удобства я использую текстовый редактор Notepad ++

Главное здесь понять логику, т.е. секция «Начало файла» и «Конец файла» сигнализируют нам о границах наших данных, а в секции «Новая строка» и «Конец строки» расположены данные одной записи нашей таблицы, соответственно, сколько строк в нашей таблице столько же этих секций у нас будет, у нас три строки и секций мы должны получить тоже три. Названия полей я оставил такими же, как и в нашей таблице. Структуру файла Вы можете придумать и совсем другую, я для примера использовал такую, просто мне как-то раз пришлось выгружать данные в таком виде, но как я уже сказал, это только для того чтобы Вы смогли понять логику выгрузки данных в текстовый файл, если конечно необходимость выгрузки данных в txt у Вас возникнет.

Код VBA для выгрузки данных в текстовый файл

Надеюсь, с основами Access Вы знакомы, и поэтому заострять внимание на том, куда вставлять код не буду, единственное скажу, что я реализовал механизм следующим образом, есть форма на ней кнопка, по нажатию на которую открывается диалоговое окно выбора пути сохранения файла, после чего нажимаем «Сохранить» и данные выгружаются.

Код кнопки, события «Нажатие кнопки» (его я как обычно подробно прокомментировал):

План действий здесь очень простой, открывается диалоговое окно выбора пути сохранения файла, затем пользователь выбирает, куда сохранить файл, водит название файла, нажимает кнопку сохранить, при этом процедура анализирует какое название файла ввел пользователь, имеется в виду с расширением или без, в случае если он не ввел расширение, процедура автоматически подставит расширение .txt, данная проверка использует встроенные функции VBA Access. Потом осуществляется получение данных из источника, создается файл, с заданным именем по заданному пути, открывается, и все данные туда записываются циклом, а в конце мы просто выводим сообщение, сколько строк мы экспортировали, которые мы подсчитали путем увеличение переменной count на каждую итерацию цикла.

По-моему ничего сверхъестественного в данной процедуре нет, и каких-либо сложностей возникнуть не должно, но если у Вас что-то не получается, задавайте вопросы в комментариях.

Заметка! Если Вас интересует SQL и T-SQL, рекомендую посмотреть мои видеокурсы по T-SQL, с помощью которых Вы «с нуля» научитесь работать с SQL и программировать с использованием языка T-SQL в Microsoft SQL Server.

Выгрузка содержимого таблицы в файл

Иногда полезно получить значения строк таблицы в виде текстового файла, в формате инструкции INSERT INTO VALUES . Этот сценарий можно выполнить, чтобы заполнить таблицу, если она случайно будет удалена.

Приведенный на рисунке пример создает инструкции INSERT для таблицы DEPARTMENTS_TEST , содержание которой выгружено в файл data.sql с помощью функции Save File (сохранить файл) приложения SQL Developer.

Содержимое файла сценария data.sql следующее:

INSERT INTO departments_test VALUES
(10, ‘Administration’, 1700);
INSERT INTO departments_test VALUES
(20, ‘Marketing’, 1800);
INSERT INTO departments_test VALUES
(50, ‘Shipping’, 1500);
INSERT INTO departments_test VALUES
(60, ‘IT’, 1400);
.

Возможно, вы обратили внимание на большое количество символов одинарных кавычек на предыдущем рисунке. Последовательность из четырех одинарных кавычек создает в конечной инструкции один символ одинарной кавычки. Также не забывайте, что в кавыч-ки должны быть заключены символьные значения и значения дат.

Чтобы вывести один символ одинарной кавычки внутри строки, понадобится поместить перед этим символом еще один символ одинарной кавычки. Например, в пятом примере на рисунке окружающие символы кавычек применяются ко всей строке. Второй символ кавычки играет роль префикса для вывода третьего символа кавычки. Следовательно, результат будет представлять один символ кавычки, за которым идет скобка, после которой стоит точка с запятой.

Как подключить базу данных в SQL?

В открытом окне SQL Server Management Studio нажимаем указанные кнопки:

  1. Затем нажимаем кнопку «Добавить», выбираем папку, где находится база и 2 раза кликаем по файлу с расширением mdf.
  2. Затем нажимаем «ОК» и после этого мы можем увидеть подключенную базу данных
  3. Создание базы данных

Как импортировать базу данных в SQL Server?

Перенос базы данных средствами Access («Мастер преобразования в формат SQL Server») Для того чтобы начать перенос нужно нажать кнопку «SQL Server» в области «Перемещение данных» вкладки «Работа с базами данных». В открывшемся окне нужно выбрать, куда будут перенесены данные.

Как открыть файл MDF в SQL?

Процедура доступа к mdf файлам с помощью Recovery Toolbox for SQL Server выглядит следующим образом: Скачайте программу по ссылке: https://recoverytoolbox.com/download/RecoveryToolboxForSQLServerInstall.exe. Установите и запустите программу для просмотра mdf файлов

Как выгрузить базу данных MySQL?

Как экспортировать базы данных MySQL

  1. Откройте базу данных с помощью PHPMyAdmin: Веб-хостинг и классический хостинг | cPanel | Plesk.
  2. На главной странице phpMyAdmin выберите базу данных для экспорта.
  3. В верхней части страницы выберите вкладку Экспорт.
  4. Чтобы экспортировать всю базу данных, перейдите к следующему шагу. …
  5. Нажмите Выполнить. …
  6. Нажмите OK.

Как выгрузить базу данных из phpMyAdmin?

Зайдите в phpMyAdmin, выделите слева базу данных, которую необходимо перенести, и нажмите на кнопку «Экспорт» в верхнем меню. Откроется диалоговое окно, в котором обязательно выберите тип базы SQL, после чего нажмите кнопку ОК. Дождитесь пока файл базы данных скачается на ваш компьютер.

Как запустить файл SQL?

У вас есть довольно много вариантов:

  1. используйте клиент командной строки MySQL: mysql -h hostname -u user database < path/to/test. sql.
  2. Установите графические инструменты MySQL и откройте файл SQL, а затем выполните его
  3. Используйте phpmysql, если база данных доступна через ваш webserver.

Как восстановить базу данных MDF?

Как восстановить mdf файл базы данных Microsoft SQL Server из состояния suspend

  1. Выберите поврежденный *.mdf файл на первой странице программы
  2. Выберите способ экспорта: Сохранить как SQL-скрипты на диск …
  3. Выберите данные, которые должны быть восстановлены и сохранены
  4. Нажмите Start recovery (Начать восстановление)

Как можно открыть уже созданную базу данных?

Открытие базы данных Access в проводнике

В проводнике Windows перейдите на диск или в папку, содержащую файл базы данных Access, который вы хотите открыть, и дважды щелкните ее. Access запустится, и откроется база данных.

Как подключить Access к SQL Server?

Создаём связь access с таблицами на SQL Server

Запускаем программу Access и создаём базу данных. Далее для подключения к таблицам sql сервера переходим в меню Файл — Внешние данные — связь с таблицами. Далее переходим на вкладку Файловый источник данных, выбираем ранее созданное подключение в пример test жмем OK.

Как импортировать из Access в SQL?

Откройте конечную базу данных. На вкладке Внешние данные в группе Импорт и связи нажмите кнопку База данных ODBC. Выберите пункт Импортировать данные источника в новую таблицу в текущей базе данных и нажмите кнопку ОК. Если нужный файл DSN уже существует, в диалоговом окне Выбор источника данных выберите его в списке.

Как преобразовать Access в SQL?

Преобразование базы данных Access 2010 в SQL Server

Откройте базу данных в Microsoft Access. Выберите вкладку « Инструменты базы данных » на ленте. Нажмите кнопку SQL Server , расположенную в разделе « Переместить данные ». Откроется Мастер увеличения размера.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *