Тема: Массовый импорт и экспорт данных, обработка ошибок 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема: Массовый импорт и экспорт данных, обработка ошибок



I ЛАБОРАТОРНАЯ РАБОТА

Тема: Массовый импорт и экспорт данных, обработка ошибок

Необходимо создать пакет массовой загрузки и выгрузки данных с обработкой ошибок, который должен включать следующее:

1) Использование BULK INSERT из различных источников,

2) Использование программы BCP для импорта и экспорта данных,

3) Использование конструкции TRY... CATCH и RAISERROR для обработки ошибок на стороне SQL Server

4) Использование простого и рекурсивного СТЕ для выборки и модификации данных

5) Создание и использование символьного файла форматирования,

6) Создание и использование собственного файла форматирования.

Основные сведения

 

http://technet.microsoft.com/ru-ru/library/ms175937%28v=sql.105%29.aspx

Microsoft SQL Server позволяет массово импортировать и экспортировать данные (массовая обработка) между таблицей SQL Server и файлом данных. Эта возможность является необходимой для эффективного перемещения данных между SQL Server и разнородными источниками данных. Массовый экспорт означает копирование данных из таблицы SQL Server в файл данных. Массовый импорт означает загрузку данных из файла данных в таблицу SQL Server. Например, можно экспортировать данные из приложения Microsoft Excel в файл данных и затем совершить массовый импорт данных в таблицу SQL Server.

Синтаксические обозначения в Transact-SQL (Transact-SQL)

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

Соглашение Используется для
ВЕРХНИЙ РЕГИСТР Ключевые слова Transact-SQL.
курсив Пользовательские параметры синтаксиса Transact-SQL.
полужирный Имена баз данных, таблиц, столбцов, индексов, хранимых процедур, программ, типов данных.
подчеркнутый Указывает значение по умолчанию, которое применяется, когда в инструкции пропущено предложение, содержащее подчеркнутое значение.
| (вертикальная черта) Разделяет элементы синтаксиса внутри квадратных или фигурных скобок. Может быть использован только один из разделенных элементов.
[ ] (квадратные скобки) Необязательные элементы синтаксиса. Скобки не входят в синтаксис команды.
{ } (фигурные скобки) Обязательные элементы синтаксиса. Фигурные скобки вводить не следует.
[,...n] Указывает на то, что предшествующий элемент можно повторить n раз. Отдельные вхождения элемента разделяются запятыми.
[... n] Указывает на то, что предшествующий элемент можно повторить n раз. Отдельные вхождения элемента разделяются пробелами.
; Признак конца инструкции Transact-SQL. Хотя точка с запятой не требуется для большинства инструкций в данной версии SQL Server, она понадобится в следующей версии.
<метка>::= Имя синтаксического блока, которое используется для группирования и маркировки длинных частей синтаксиса или синтаксического блока, который может использоваться в нескольких местах в рамках одной инструкции. Каждое место, в котором может быть использован синтаксический блок, обозначается меткой, заключенной в двойные угловые скобки: <метка>. Набор представляет собой коллекцию выражений, например <набор группирования>; а список — коллекцию наборов, например <составной список элементов>.

Составные имена

Если не указано иное, все ссылки Transact-SQL на имена объектов базы данных могут быть четырехсоставными именами, записываемыми в следующей форме:

server_name.[database_name].[schema_name].object_name

| database_name.[schema_name].object_name

| schema_name.object_name

| object_name

где,

server_name – указывает имя связанного или удаленного сервера, не нужно указывать имя сервера при локальном его использовании;

database_name – указывает имя базы данных SQL Server, если объект хранится на локальном экземпляре SQL Server. Когда объект находится на связанном сервере, аргумент database_name указывает каталог OLE DB.

schema_name – если объект находится в базе данных SQL Server, указывает имя схемы, которая содержит объект. Когда объект находится на связанном сервере, аргумент schema_name указывает имя схемы OLE DB.

object_name – ссылается на имя объекта базы данных.

 

При ссылке на конкретный объект нет необходимости всякий раз указывать базу данных и схему, но, если имена объектов не уникальны или в базе несколько схем, то рекомендуется указать имя схемы.

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

Формат ссылки на объект Описание
server. database. schema. object Четырехчастное имя.
server. database.. object Имя схемы пропущено.
server.. schema. object Имя базы данных пропущено.
server... object Имя базы данных и имя схемы пропущены.
database. schema. object Имя сервера пропущено.
database.. object Имя сервера и имя схемы пропущены.
schema. object Имя сервера и имя базы данных пропущены.
object Имена сервера, базы данных и схемы пропущены.

Файлы форматирования

Программа bcp, инструкции BULK INSERT и INSERT... SELECT * FROM OPENROWSET(BULK...) поддерживают использование специализированного файла под названием файл форматирования для хранения сведений о форматировании для каждого поля в файле данных. Файл форматирования также может содержать сведения о соответствующей таблице SQL Server. Файл форматирования может быть использован с целью предоставления всех сведений о форматировании, необходимых для массового экспорта данных из экземпляра SQL Server и массового импорта данных в него.

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

SQL Server 2005 и более поздние версии поддерживают два типа файлов форматирования: XML и не-XML файлы форматирования. Файлы форматирования в формате, отличном от XML, поддерживаются ранними версиями SQL Server; поддержка XML-файлов форматирования появилась только в SQL Server 2005.

Единственный инструмент, который может сформировать файл форматирования, — это программа bcp. Дополнительные сведения см. в разделе Создание файла форматирования. Дополнительные сведения о файлах форматирования см. в разделе Файлы форматирования для импорта или экспорта данных.

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

Вопросы производительности

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

· Переключения пакета;

· Проверка ограничений CHECK;

· Способ регистрации массовых транзакций. Это имеет важное значение для баз данных, которые обычно используют модель полного восстановления;

· Упорядочивание экспортированных данных;

· Импортирование параллельных данных;

· Блокировка таблицы;

· Выполнение триггера.

Для операций по массовому экспорту не существует никаких специальных методик по оптимизации. Эти операции используют инструкции SELECT.

BULK INSERT (Transact-SQL)

Выполняет импорт файла данных в таблицу или представление базы данных в формате, указанном пользователем, в SQL Server 2008 R2. Эта инструкция используется для эффективной передачи данных между SQL Server и разнородными источниками данных.

Синтаксис

Transact-SQL

BULK INSERT [database_name.[schema_name]. | schema_name.] [table_name | view_name] FROM 'data_file' [ WITH ([ [, ] BATCHSIZE = batch_size ] [ [, ] CHECK_CONSTRAINTS ] [ [, ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] [ [, ] DATAFILETYPE = { 'char' | 'native'| 'widechar' | 'widenative' } ] [ [, ] FIELDTERMINATOR = 'field_terminator' ] [ [, ] FIRSTROW = first_row ] [ [, ] FIRE_TRIGGERS ] [ [, ] FORMATFILE = 'format_file_path' ] [ [, ] KEEPIDENTITY ] [ [, ] KEEPNULLS ] [ [, ] KILOBYTES_PER_BATCH = kilobytes_per_batch ] [ [, ] LASTROW = last_row ] [ [, ] MAXERRORS = max_errors ] [ [, ] ORDER ({ column [ ASC | DESC ] } [,...n ]) ] [ [, ] ROWS_PER_BATCH = rows_per_batch ] [ [, ] ROWTERMINATOR = 'row_terminator' ] [ [, ] TABLOCK ] [ [, ] ERRORFILE = 'file_name' ])]

Аргументы

 

database_name – имя базы данных, в которой находится указанная таблица или представление. Если не указано, предполагается текущая база данных.

schema_name – имя схемы таблицы или представления. Указание аргумента schema_name необязательно, но, если этот аргумент не указан и схема пользователя, выполняющего операцию массового импорта, отличается от схемы таблицы или представления, SQL Server возвращает сообщение об ошибке и операция массового импорта не выполняется.

table_name – имя таблицы или представления, куда производится массовый импорт данных. Могут указываться только те представления, в которых все столбцы относятся к одной и той же базовой таблице.

'data_file' – п олный путь и имя файла данных, который содержит импортируемые в указанную таблицу или представление данные. Аргумент data_file должен содержать действительный путь с того сервера, на котором запущен SQL Server. Если аргумент data_file является удаленным файлом, имя должно быть в формате UNC.

Имя UNC имеет вид \\Systemname\ShareName\Path\FileName.

BATCHSIZE=batch_size – указывает число строк в одном пакете. Каждый пакет копируется на сервер за одну транзакцию. SQL Server фиксирует или откатывает транзакцию для каждого из пакетов.

Ограничения

При использовании файла форматирования с инструкции BULK INSERT можно указать не более 1024 поля. Это значение совпадает с максимальным числом столбцов в таблице. При использовании инструкции BULK INSERT с файлом данных, который содержит больше 1024 полей, формируется ошибка 4822. Программа bcp не имеет этого ограничения, поэтому для файлов данных, которые содержат больше 1024 поля, используйте команды bcp.

Вопросы производительности

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

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

Пример импорта числового значения в экспоненциальном представлении

В этом примере используется следующая таблица:

CREATE TABLE t_float(c1 float, c2 decimal (5,4))

Пользователю необходимо выполнить массовый импорт данных в таблицу t_float. Файл данных «C:\t_float-c.dat» содержит данные в экспоненциальном представлении float, например:

8.0000000000000002E-28.0000000000000002E-2

Однако инструкция BULK INSERT не сможет выполнить импорт этих данных непосредственно в таблицу t_float, так как второй столбец c2 имеет тип данных decimal. Поэтому необходим файл форматирования. В нем данные типа float в экспоненциальном представлении должны быть сопоставлены десятичному формату столбца c2.

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

<?xml version="1.0"?>

<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<RECORD>

<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="30"/>

<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30"/> </RECORD> <ROW>

<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLFLT8"/>

<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLFLT8"/> </ROW> </BCPFORMAT>

Чтобы задействовать этот файл форматирования (файл C:\t_floatformat-c-xml.xml) при импорте тестовых данных в тестовую таблицу, необходимо выполнить следующую инструкцию Transact-SQL:

BULK INSERT bulktest..t_floatFROM 'C:\t_float-c.dat' WITH (FORMATFILE='C:\t_floatformat-c-xml.xml');GO

Разрешения

Требует разрешений INSERT и ADMINISTER BULK OPERATIONS. Кроме того, необходимо разрешение ALTER TABLE, если выполняется одно из следующих условий.

· Существуют ограничения, и параметр CHECK_CONSTRAINTS не указан.

Примечание
Ограничения отключены по умолчанию. Чтобы проверить ограничения явно, укажите параметр CHECK_CONSTRAINTS.

· Триггеры существуют, и параметр FIRE_TRIGGER не указан.

Примечание
По умолчанию, триггеры не срабатывают. Чтобы явно включить триггеры, укажите параметр FIRE_TRIGGER.

· Для импорта значений идентификаторов из файла данных указан параметр KEEPIDENTITY.

Программа bcp

Программа bcp используется для массового копирования данных между экземпляром Microsoft SQL Server и файлом данных в пользовательском формате. С помощью программы bcp можно выполнять импорт большого количества новых строк в таблицы SQL Server или экспорт данных из таблиц в файлы данных. За исключением случаев использования параметра queryout, применение программы не требует знания языка Transact-SQL. Чтобы выполнить импорт данных в таблицу, необходимо или использовать файл форматирования, созданный для этой таблицы, либо изучить структуру таблицы и типов данных, допустимых для ее столбцов.

Сведения о синтаксических обозначениях в программе bcp см. в разделе Синтаксические обозначения в Transact-SQL (Transact-SQL).

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

Синтаксис

bcp {[[database_name.][schema].]{table_name | view_name} | "query"} {in | out | queryout | format} data_file [-mmax_errors] [-fformat_file] [-x] [-eerr_file] [-Ffirst_row] [-Llast_row] [-bbatch_size] [-ddatabase_name] [-n] [-c] [-N] [-w] [-V (70 | 80 | 90)] [-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term] [-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size] [-S [server_name[\instance_name]]] [-Ulogin_id] [-Ppassword] [-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]

Аргументы

database_name

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

Можно также явным образом указать имя базы данных с помощью параметра -d.

owner

Имя владельца таблицы или представления. Можно не указывать необязательный параметр owner, если пользователь, выполняющий операцию, является владельцем указанной таблицы или представления. SQL Server вернет сообщение об ошибке и операция завершится, если аргумент owner не указан, а пользователь, выполняющий операцию, не является владельцем указанной таблицы или представления.

table_name

Имя целевой таблицы при импорте данных в SQL Server (in) или исходной таблицы при экспорте данных из SQL Server (out).

view_name

Имя целевого представления при копировании данных в SQL Server (in) или представления источника при копировании данных из SQL Server (out). В качестве целевых представлений могут выступать только те представления, в которых все столбцы ссылаются на одну таблицу. Дополнительные сведения об ограничениях, накладываемых на копирование данных в представления, см. в разделе Инструкция INSERT (Transact-SQL).

" query "

Запрос на языке Transact-SQL, который возвращает результирующий набор. Если запрос возвращает несколько результирующих наборов, например инструкцию SELECT, содержащую предложение COMPUTE, то в файл данных копируется только первый результирующий набор. Все последующие результирующие наборы не учитываются. Используйте двойные кавычки для запроса и одинарные кавычки для выражений, содержащихся в запросе. При выполнении массового копирования данных из запроса необходимо также указывать аргумент queryout.

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

in | out | queryout | format

Указывает направление массового копирования следующим образом.

· in — выполняется копирование из файла в таблицу базы данных или представление.

· out — выполняется копирование из таблицы базы данных или представления в файл. Если указать существующий файл, то файл перезаписывается. При извлечении данных обратите внимание, что программа bcp представляет пустую строку как строку NULL, а строку NULL как пустую строку.

· queryout — выполняется копирование из запроса. Этот аргумент может быть указан только при выполнении массового копирования данных из запроса.

· format — создается файл форматирования, основанный на указанных параметрах (-n, -c, -w или -N) и разделителях таблиц или представлений. При выполнении массового копирования данных команда bcp может обратиться к файлу форматирования, что позволяет избежать повторного ввода данных о формате в интерактивном режиме. Параметр format требует наличия параметра -f. Для создания XML-файла форматирования также необходим параметр -x. Дополнительные сведения см. в разделе Создание файла форматирования.

data_file

Полный путь файла данных. После выполнения массового импорта данных в SQL Server файл данных содержит данные, которые будут скопированы в указанную таблицу или представление. После выполнения массового экспорта данных из SQL Server файл данных содержит данные, скопированные из таблицы или представления. Путь может содержать от 1 до 255 символов. Файл данных может содержать максимум (263 - 1) строк.

Важно!
В качестве значения параметра format необходимо указать nul: data_file (formatnul).

-m max_errors

Указывает максимальное количество синтаксических ошибок, которые могут произойти до отмены операции программы bcp. Синтаксическая ошибка подразумевает ошибку преобразования данных в целевой тип данных. В общее количество ошибок max_errors не включаются ошибки, которые могут быть обнаружены только на сервере, например нарушения ограничений.

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

Примечание
Параметр -m также не применяется для преобразования типов данных money или bigint.

-f format_file

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

· если -f используется с параметром format, для указанной таблицы или представления создается файл с именем format_file. Чтобы создать XML-файл форматирования, также укажите параметр -x; Дополнительные сведения см. в разделе Создание файла форматирования.

· при использовании -f вместе с параметром in или out необходим существующий файл форматирования.

Примечание
Необязательно использовать файл форматирования с параметрами in или out. Если отсутствует параметр -f и не указаны параметры -n, -c, -w или -N, то команда запрашивает сведения о форматировании и позволяет сохранить ответы в файле форматирования (имя файла по умолчанию Bcp.fmt).

Если параметр format_file начинается с дефиса (-) или косой черты (/), не ставьте пробел между -f и именем format_file.

-x

Используется вместе с параметрами format и -f format_file, приводит к созданию файла форматирования на основе XML. По умолчанию создается файл форматирования в формате, отличном от XML. Параметр -x не работает при импорте или экспорте данных. Применение этого параметра без параметров format и -f format_file приведет к ошибке.

Примечание
Для использования аргумента командной строки -x необходима версия клиента bcp 10.0. Дополнительные сведения об использовании клиента bcp 10,0 см. в приведенном ниже разделе «Примечания».

-e err_file

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

Если параметр err_file начинается с дефиса (-) или косой черты (/), не ставьте пробел между -e и именем err_file.

-F first_row

Указывает номер первой строки для экспорта из таблицы или импорта из файла данных. Значение параметра должно быть больше (>) 0, но меньше (<) или равно (=) общему количеству строк. Если параметр отсутствует, по умолчанию используется первая строка файла.

Параметр first_row может иметь положительное целое значение до 2^63-1. Аргумент -F first_row имеет нумерацию, которая начинается с 1.

-L last_row

Указывает номер последней строки для экспорта из таблицы или импорта из файла данных. Значение параметра должно быть больше (>) 0, но меньше (<) или равно (=) номеру последней строки. Если параметр отсутствует, по умолчанию используется последняя строка файла.

Параметр last_row может иметь положительное целое значение до 2^63-1.

-b batch_size

Указывает количество строк в каждом пакете импортированных данных. Каждый пакет импортируется и регистрируется как отдельная транзакция, которая фиксируется после выполнения импорта всего пакета. По умолчанию импорт всех строк в файле данных выполняется в одном пакете. Чтобы распределить строки между несколькими пакетами, укажите значение batch_size меньше, чем количество строк в файле данных. Если транзакция пакета завершится неудачно, то будет выполнен откат только операций вставки в текущем пакете. Произошедшая ошибка не затрагивает пакеты, импорт которых уже выполнен зафиксированными транзакциями.

Не используйте этот параметр совместно с параметром -h" ROWS_PER_BATCH = bb ".

Дополнительные сведения см. в разделе Управление пакетами для массового импорта данных.

-d database_name

Указывает базу данных, с которой надо соединиться. По умолчанию программа bcp.exe соединяется с пользовательской базой данных по умолчанию.

Если указать параметр -d database_name одновременно с трехкомпонентным именем (database_name.schema.table, переданным программе bcp.exe в качестве первого параметра), возникнет ошибка. Причина этого заключается в том, что нельзя указывать имя базы данных дважды.

Если параметр database_name начинается с дефиса (-) или косой черты (/), не ставьте пробел между -d и именем базы данных.

-n

Выполняет операцию массового копирования, используя собственные типы данных (базы данных). Этот параметр не запрашивает тип данных для каждого поля, он использует собственные значения.

Дополнительные сведения см. в разделе Использование собственного формата для импорта и экспорта данных.

-c

Выполняет операцию, используя символьный тип данных. При использовании этого параметра не запрашивается тип данных каждого поля. Для хранения данных используется тип char, префиксы отсутствуют, в качестве разделителя полей используется символ табуляции \t, а в качестве признака конца строки — символ новой строки \r\n.

Дополнительные сведения см. в разделе Применение символьного формата при импорте и экспорте данных.

-N

Выполняет операцию массового копирования, используя собственные типы данных (базы данных) для несимвольных данных и символы Юникода для символьных данных. Этот параметр предлагает более высокопроизводительную альтернативу параметру -w и предназначен для передачи данных от одного экземпляра SQL Server к другому с помощью файла данных. Он не запрашивает тип данных каждого поля. Используйте этот параметр при передаче данных, которые содержат символы национального алфавита ANSI, а также для того, чтобы повысить производительность работы в собственном режиме.

Дополнительные сведения см. в разделе Использование собственного формата Юникода для импорта или экспорта данных.

Начиная с SQL Server 2005 с пакетом обновления 1 (SP1), если осуществляется экспорт, а затем импорт данных в одной и той же схеме таблицы с помощью программы bcp.exe с параметром -N, то может появиться предупреждающее сообщение об усечении при наличии символьного столбца фиксированной длины в кодировке, отличной от Юникода (например, char(10)).

Это предупреждение можно пропустить. Одним из способов его устранения является применение аргумента командной строки -n вместо -N.

-w

Выполняет операцию массового копирования, используя символы Юникода. При использовании этого параметра не запрашивается тип данных каждого поля, для хранения данных используется тип nchar, отсутствуют префиксы, в качестве разделителя полей используется символ табуляции \t, а в качестве признака конца строки — символ новой строки \n.

Дополнительные сведения см. в разделе Использование символьного формата Юникода для импорта и экспорта данных.

-V (70 | 80 | 90)

Выполняет операцию массового копирования, используя типы данных более ранней версии SQL Server. Этот параметр не запрашивает тип данных каждого поля, он использует значения по умолчанию.

70 = SQL Server 7.0

80 = SQL Server 2000

90 = SQL Server 2005

Например, чтобы сформировать данные для типов, не поддерживаемых SQL Server 7.0, но введенных в более поздних версиях SQL Server (например, bigint, sql_variant и xml), используйте параметр -V70.

Дополнительные сведения см. в разделе Импорт данных в собственном и символьном формате из предыдущих версий SQL Server.

-q

Выполняет инструкцию SET QUOTED_IDENTIFIERS ON в соединении между программой bcp и экземпляром SQL Server. Используйте этот параметр для указания базы данных, владельца, таблицы или имени представления, содержащих пробел или одинарную кавычку. Заключите все имя таблицы или представления, состоящее из трех частей, в кавычки ("").

Чтобы указать имя базы данных, содержащее пробел или одинарные кавычки, следует использовать параметр –q.

-q не применяется к значениям, переданным в -d.

Дополнительные сведения см. в подразделе «Примечания» далее в этом разделе.

-C { ACP | OEM | RAW | code_page }

Указывает кодовую страницу данных в файле данных. Применение параметра code_page уместно только в том случае, если данные содержат столбцы типа char, varchar или text с символьными значениями более 127 или менее 32.

Значение кодовой страницы Описание
ACP ANSI/Microsoft Windows (ISO 1252).
OEM Кодовая страница, используемая клиентом по умолчанию. Это — кодовая страница, используемая по умолчанию, если не указан параметр -C.
RAW Преобразование из одной кодовой страницы в другую не выполняется. Этот параметр обеспечивает высокую производительность, так как преобразование не выполняется.
code_page Определенный номер кодовой страницы, например 850. Важно! SQL Server не поддерживает кодовую страницу 65001 (кодировка UTF-8).

Дополнительные сведения см. в разделе Копирование данных между различными параметрами сортировки.

-t field_term

Указывает признак конца поля. Значение по умолчанию — символ табуляции \t. Используйте этот параметр, чтобы переопределить признак конца поля по умолчанию. Дополнительные сведения см. в разделе Определение признаков конца поля и строки.

Если в команде bcp.exe указан признак конца поля в шестнадцатеричном виде, то значение будет усечено до 0x00. Например, если указать значение 0x410041, то будет использовано значение 0x41.

Если параметр field_term начинается с дефиса (-) или косой черты (/), не ставьте пробел между -t и значением field_term.

-r row_term

Указывает признак конца строки. Значение по умолчанию — символ новой строки \n. Используйте этот параметр, чтобы переопределить признак конца строки по умолчанию. Дополнительные сведения см. в разделе Определение признаков конца поля и строки.

Если в команде bcp.exe указан признак конца строки в шестнадцатеричном виде, то значение будет усечено до 0x00. Например, если указать значение 0x410041, то будет использовано значение 0x41.

Если параметр row_term начинается с дефиса (-) или косой черты (/), не ставьте пробел между -r и значением row_term.

-i input_file

Указывает имя файла ответов, содержащего ответы на вопросы командной строки для каждого поля данных при выполнении массового копирования в интерактивном режиме (когда не указаны параметры -n, -c, -w или -N).

Если параметр input_file начинается с дефиса (-) или косой черты (/), не включайте пробел между -i и именем input_file.

-o output_file

Указывает имя файла, который принимает перенаправленные из командной строки выходные данные.

Если параметр output_file начинается с дефиса (-) или косой черты (/), не включайте пробел между -o и именем output_file.

-a packet_size

Указывает число байтов в каждом сетевом пакете, отправляемом от сервера и к серверу. Параметр конфигурации сервера можно задать с помощью среды Среда SQL Server Management Studio (или системной хранимой процедуры sp_configure). Однако параметр конфигурации сервера в отдельных случаях можно изменить с помощью этого параметра. Значение packet_size может лежать в пределах от 4 096 до 65 535 байт, значение по умолчанию равно 4 096.

Увеличение размера пакета может повысить производительность операций массового копирования. Если был запрошен пакет большего размера, но он не может быть предоставлен, то используется значение по умолчанию. Статистика производительности, формируемая программой bcp, показывает используемый размер пакета.

-S server_name[ \ instance_name]

Указывает экземпляр SQL Server, к которому выполняется подключение. Если сервер не указан, то программа bcp выполняет подключение к экземпляру SQL Server по умолчанию на локальном компьютере. Этот параметр необходим, когда команда bcp запускается из удаленного компьютера в сети или из локального именованного экземпляра. Чтобы подключиться к экземпляру по умолчанию SQL Server на сервере, укажите только server_name. Чтобы подключиться к именованному экземпляру SQL Server, укажите server_name \ instance_name.

-U login_id

Указывает идентификатор входа, используемый для соединения с SQL Server.

Примечание по безопасности
Если программа bcp подключается к SQL Server с помощью доверительного соединения, используя встроенную безопасность, применяйте параметр -T (доверенное соединение) вместо сочетания user name и password.

-P password

Указывает пароль для идентификатора входа. Если данный параметр не используется, команда bcp запрашивает пароль. Если этот параметр используется в конце командной строки без пароля, то программа bcp использует пароль по умолчанию (NULL).

Примечание по безопасности
Не используйте пустые пароли. Выбирайте надежные пароли.

Чтобы скрыть пароль, не указывайте параметр -P вместе с параметром -U. Вместо этого после ввода команды bcp с параметром -U и другими ключами (не указывайте -P) нажмите клавишу ВВОД, и команда предложит ввести пароль. Этот метод обеспечивает скрытие пароля при вводе.

Если параметр password начинается с дефиса (-) или косой черты (/), не включайте пробел между -P и password.

-T

Указывает, что программа bcp устанавливает доверительное соединение с SQL Server с использованием встроенной безопасности. Не требуются учетные данные безопасности для сетевого пользователя, параметры login_id и password. Если параметр –T не указан, для входа необходимо указать –U и –P.

-v

Выводит номер версии и сведения об авторских правах для программы bcp.

-R

Указывает, что массовое копирование в SQL Server данных в денежном формате, в формате даты и времени выполняется с помощью регионального формата, определенного настройками локали клиентского компьютера. По умолчанию региональные настройки не учитываются.

-k

Указывает, что пустые столбцы во время данной операции должны сохранить значение NULL вместо любых вставляемых значений столбцов по умолчанию. Дополнительные сведения см. в разделе Сохранение значений NULL или использование значений по умолчанию при массовом импорте данных.

-E

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

Если файл данных не содержит значений для столбца идентификаторов в таблице или представлении, то с помощью файла форматирования укажите, что столбец идентификаторов в таблице или представлении должен быть пропущен при импорте данных. SQL Server автоматически присвоит столбцу уникальные значения. Дополнительные сведения см. в разделе DBCC CHECKIDENT (Transact-SQL).

Для параметра -E необходимы специальные разрешения. Дополнительные сведения см. в подразделе «Примечания» далее в этом разделе.

Дополнительные сведения о хранении значений идентификации см. в разделе Сохранение значений идентификаторов при массовом импорте данных.

-h" hint[,... n] "

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

ORDER ( column[ASC | DESC] [,...n] )



Поделиться:


Последнее изменение этой страницы: 2016-12-11; просмотров: 775; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.100.120 (0.148 с.)