Программирование >>  Программирование баз данных 

1 ... 213 214 215 [ 216 ] 217 218 219 ... 346


Импорт с помощью утилиты ВСР

в предыдущих разделах были приведены основные сведения об использовании утилиты ВСР. А с этого раздела начинается описание операций, в которых применяется эта утилита.

Чаще всего утилита ВСР используется для массового импорта данных в существующие таблицы и представления SQL Server. Для импорта данных необходимо иметь возможность подключиться к серверу с помощью учетной записи или доверительного соединения, а также иметь права на выполнение операций INSERT и SELECT на таблице или представлении назначения.

Исходный файл может содержать данные в собственном формате SQL Sender, символы ASCII, символы Unicode или комбинацию собственных данных и данных Unicode. Следует учитывать, что для описания исходных данных необходимо применить соответствующую опцию. Кроме того, файл данных может стать пригодным для использования только при том условии, что будут правильно указаны разделители полей и строк (с использованием параметров -t и -г) или применены разделители полей и строк, предусмотренные по умолчанию (таковыми являются символы табуляции и символы обозначения конца строки).

Обязательно уточните, каковым должно быть назначение потока данных, прежде чем приступать к использованию утилиты ВСР. Во время работы с утилитой ВСР необходимо учитывать несколько нюансов, которые могут повлиять на импорт данных. Значения, заданные в качестве временных отметок, или значения вычисляемых столбцов игнорируются. Поэтому если указанные значения присутствуют в соответствующих столбцах исходного файла, то они не будут учитываться. Если же в исходном файле отсутствуют значения для указанных столбцов, то должен быть предусмотрен файл формата (о котором речь пойдет позже в этой главе), чтобы можно было пропустить эти значения.

Выгие описана одна из тех важных особенностей, с которыми приходится время от времени сталкиваться при эксплуатации практически любого программного обеспечения. В рассматриваемом случае, если в таблице назначения имеются столбцы с отметками времени или вычисленными данными, то эти данные необходимо предоставить для копирования, несмотря на то, что в СУБД SQL Server они игнорируются. И в этом случае способ преодоления указанного ограничения состхтт в использовании файла формата, в котором явно указано, чтю соответствующие стюлбцы должны быть пропущены.

Кроме того, при выполнении операций ВСР игнорируются правила, заданные для таблицы. Игнорируются также все триггеры и ограничения целостности, если не предусмотрено применение подсказок FIRE TRIGGERS и (или) CHECK CONSTRAINTS. Обеспечивается принудительное применение ограничений уникальности, индексов и ограничений первичного/внешнего ключа, а также применение заданных по умолчанию ограничений целостности, если не задана опция -к.

Пример импорта данных

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



ции, в котором содержится информация о грузоотправителях, предназначенная для базы данных AdventureWorks. Ниже приведен пример того, как выглядят данные.

1 Smart Guys Research and Development 2006-04-01 00:00:00.000

2 Product Test Research and Development 2006-04-01 00:00:00.000

Чтобы импортировать эти данные в таблицу Department с использованием доверительного соединения с локальным сервером, можно вызвать на выполнение следующую команду:

ВСР AdventureWorks.HumanResources.Department in c:\DepartmentIn.txt -с -Т

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

Первый столбец в таблице Department является столбцом идентификации, а опция - Е не указана, поэтому в СУБД SQL Server вдентификационные значения в файле будут игнорироваться и вырабатываться новые значения. Опция -с обозначает исходные данные как символьные, а опция -Т указывает, что применяется доверительное соединение.

Следует отметить, что если не используется идентификация Windows и пользователь не выполнил настройку регистрации в сети, определив соответствующие права в СУБД SQL Seruer, то не исключено, что придется внести изменения в приведенный выше пример и ввести в действие опции -Ри -S.

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

Network packet size (bytes): 4096

Clock Time (ms.) Total : 375 Average : (3.88 rows per sec.)

Затем мы можем снова перейти к программе Management Studio и убедиться в том, что данные вошли в таблицу Department в соответствии с ожидаемым: USE AdventureWorks

SELECT * FROM HumanResources.Department

Выполнение этой команды приводит к получению нескольких строк, но наиболее важно то, что две из этих строк представляют собой ожидаемый результат выполнения операции ВСР:

DepartmentID Name GroupName ModifiedDate

1 Engineering Research and Development 1998-06-01...

2 Tool Design Research and Development 1998-06-01...

16 Executive Executive General and Administration 1998-06-01...

17 Smart Guys Research and Development 2006-04-01...

18 Product Test Research and Development 2006-04-01...



Как всегда, следует учитывать, что, кроме этих двух только что импортированных строк, полученные данные могут выглядеть немного иначе, в зависимости от того, какие примеры из других глав книги были выполнены или не выполнены читателем и какие прочие эксперименты были им проведены. В рассматриваемом примере нам достаточно убедиться в том, что в таблицу попала информация о поставщиках Smart Guys и Product Test, а идентификационные значения могут быть переназначены с учетом того, какие значения были присвоены ранее на данном конкретном сервере другим строкам.

Теперь рассмотрим более сложный пример. Для этого воспользуемся новой таблицей, CustomerList. Оператор CREATE, предназначенный для создания таблицы CustomerList, выглядит следующим образом: CREATE TABLE dbo.CustomerList

CustomerlD

nchar(5)

NOT NULL

PRIMARY

KEY,

CompanyName

nvarchar(40)

NOT NULL

ContactName

nvarchar(30)

NULL,

ContactTitle

nvarchar(30)

NULL,

Address

nvarchar(60)

NULL,

City

nvarchar(15)

NULL,

Region

nvarchar(15)

NULL,

PostalCode

nvarchar(10)

NULL,

Country

nvarchar(15)

NULL,

Phone

nvarchar(24)

NULL,

nvarchar(24)

NULL

Данные представлены в файле с разделителями в виде запятых (в формате . csv) и содержат информацию о новых заказчиках. Часть содержимого этого файла приведено ниже.

XWALL,Wallys World,Wally Smith,Owner (503)555-8448 XGENE,Generic Sales and Services,Al Smith (503)555-9339 XiyiORE,More for You,Paul Johnston, President (573) 555-3227, ,

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

Рассмотрим, как можно воспользоваться утилитой ВСР для импорта данных в удаленную систему. Для этого, в частности, может применяться следующая команда:

ВСР AdventureWorks.dbo.CustomerList in c:\newcust.txt -с -t, -r\n -Ssocrates -Usa -Pbubbagump



1 ... 213 214 215 [ 216 ] 217 218 219 ... 346

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика