Перемещение данных

Управление данными является одной из важных задач системного администратора; к процессу управления относятся: передача данных в БД из разных источников; преобразование данных из БД SQL Server в другой формат; распространение данных на другие серверы по сети; загрузка архивной копии данных.

Data Transformation Service (DTS) – служба преобразования данных – используется для импорта, экспорта и трансформации данных между разнородными источниками данных. DTS можно использовать с любыми источниками данных, к которым можно обратиться посредством OLE DB. DTS состоит из четырех компонентов: мастера импорта DTS, мастера экспорта DTS, создателя пакетов DTS и программных интерфейсов DTS. В DTS напрямую не поддерживаются языки С, Visual C++, зато Perl, Java, Visual Basic поддерживаются. DTS переносит данные и их структуру. Другие объекты баз данных (триггеры, правила, хранимые процедуры, значения по умолчанию и т.д.) не переносятся. При использовании мастеров DTS, можно указать привязку столбцов и информацию по преобразованию.

Утилита dtswiz – это программа, которая позволяет запустить DTS из командной строки. При её запуске можно указать некоторые параметры для того, чтобы не отвечать на вопросы экранов мастеров импорта и экспорта:

Dtswiz [{/?|{/n|[/u идентификатор учетной записи пользователя для входа] [/p пароль]}

[/f имя файла ] {/I | /x} {/r драйвер соединения | [/s имя сервера] [/d база данных ] [/y]}}]

/ f – имя файла экспортируемого или экспортируемого

/ I - говорит об импорте в таблицу базы данных SQL Server

/x - экспорт из таблицы

/ r – указывает драйвер соединения

/ s – указывает на экземпляр SQL Server

/ u – определяет имя пользователя при соединении

/ p - указывает пароль

/ n – определяет, что используется доверенное соединение

/ d – определяет, какая база данных будет использоваться

/ y – во время работы утилиты системные базы данных будут спрятаны, их не будет ни в списке баз данных получателя, ни в списке источника.

 

2-й способ: копирование с помощью команды, определяющей способ загрузки данных в таблицу из файла:

Bulk insert ‘имя таблицы’ from имя файла данных [опции]

Главное отличие между программой bcp и командой Bulk insert состоит в том, что последняя может только загружать данные в таблицу, экспортировать же в файл не может.

 

3-й способ: копирование с помощью программы bcp.

Утилита Bulk Copy Program (bcp.exe или bcp) используется для импорта и экспорта данных из таблиц баз данных SQL Server. Она может работать с файлами самых разных форматов. Когда мы копируем данные из файла, bcp добавляет данные в существующую таблицу, если мы копируем данные в файл, все его предыдущее содержимое будет перезаписано. При загрузке данных в таблицу эта таблица уже должна быть создана, и вы должны иметь разрешения на вставку данных и на осуществление запросов к этой таблице. Номера полей в файле и их количество не обязательно должны совпадать с порядком и количеством столбцов в таблице. Однако, если они не совпадают, вам придется использовать файл для форматирования. Данные в файле должны быть совместимыми с типами данных, определяемыми для столбцов таблицы.

Bcp <имя таблицы> | <имя вида> | ‘запрос’

{in |out | queryout | format}<файл данных>

[-m максимальное количество ошибок][-f файл форматирования] [-e файл ошибок]

[-F первая строка][-L последняя строка][-b размер пакета]

[-n][-c][-w][-N][-6][-q][-C кодировка]

[-t разделитель полей] [-r разделитель строк]

[-I входной файл][-o файл выхода][-a размер пакета]

[-S имя сервера] [-U идентификатор учетной записи пользователя для входа] [-P пароль]

[-T] [-v] [-k] [-E][-h” подсказка [,…n]”]

Имя таблицы – полный путь к ней. Если используется таблица, то указываются параметры: in (из файла в таблицу), out (из таблицы в файл), format (предварительно создается файл форматирования, кроме этого должен быть ключ –f). Если указывается запрос, то должен быть параметр queryout. В запросе должна быть одна команда SELECT или вызов хранимой процедуры, возвращающий один набор данных.

-m - число ошибок, которые могут возникнуть до прекращения работы bcp. Та строка, при операции с которой произошла ошибка, будет проигнорирована. Значение по умолчанию 10.

-f - указывается файл форматирования

-e - определяет файл ошибок, возникших при выполнении команды,

-F –L используется для определения первой и последней строк. По умолчанию используются все строки в таблице или файле,

-b – определяет количество строк в пакете (по умолчанию пакет равен размеру всего файла)

-n – указывает на необходимость использования родного формата SQL Server

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

-w – указывает на необходимость конвертировать все типы данных в формат UNICODE.

-N – определяет использовать типы данных SQL для нетекстовых данных. Использование этого параметра в сочетании с –w часто используется для переноса с одного экземпляра SQL на другой

-6 – используется для SQL 6.5 и более ранних

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

-C – определяет страницу кодировки символов для текстовых данных. Этот параметр влияет на коды символов > 127 и < 32

-t - указывает на разделитель между полями. Разделитель между полями по умолчанию – символ табуляции

-r – междустроковый разделитель (по умолчанию – символ начала новой строки)

-I –имя входящего файла ответов

-o –имя исходящего файла, куда будут записаны данные

-a – размер пакета

-S –имя экземпляра SQL Server, к которому подключаются для выполнения команды

-U – имя пользователя (по умолчанию имя локального пользователя)

-P - пароль

-T – определяет, что будет выполнено доверенное соединение ( то есть без указания имени пользователя и пароля)

-v –сообщает номер версии и кому принадлежат права на программу BCP

-k –указывает, что в полях, не имеющих при копировании значений, будет вставлено NULL (даже если для этих столбцов имеется значение по умолчанию)

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

-h – определяет подсказки при выполнении команды bcp