Перемещение данных
Управление данными является одной из важных задач системного администратора; к процессу управления относятся: передача данных в БД из разных источников; преобразование данных из БД 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