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

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

ПримечаниеПримечание

При массовом переносе данных между экземплярами Microsoft SQL Server, если файл данных содержит символьные данные в Юникоде, но не содержит расширенных символов и символов в двухбайтовой кодировке, пользуйтесь символьным форматом Юникода. Дополнительные сведения см. в разделе Использование символьного формата Юникода для импорта и экспорта данных.

В символьном формате все столбцы представлены в формате символьных данных. Хранение данных в символьном формате удобно в том случае, когда данные используются в других программах (например электронных таблицах) или когда на экземпляр SQL Server необходимо перенести данные из базы данных другого поставщика (например Oracle).

Замечания по использованию символьного формата

При использовании символьного формата имейте в виду следующее.

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

  • По умолчанию перед выполнением массового импорта или экспорта символьных данных выполняются следующие преобразования.

    Направление массовой операции

    Преобразование

    Экспорт

    Преобразует данные в символьное представление. Если это явно запрошено, данные в символьных столбцах преобразуются в требуемую кодовую страницу. Если кодовая страница не указана, символьные данные преобразуются в кодовую страницу изготовителя оборудования (OEM) клиентского компьютера.

    Импорт

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

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

  • Значения типа sql_variant сохраняются в файле в символьном формате без метаданных. Каждое значение типа данных преобразуется в формат типа char в соответствии с правилами неявного преобразования данных. В столбец типа sql_variant данные импортируются как тип char. При импорте в столбец типа данных, отличного от типа sql_variant, данные преобразуются из типа char в соответствии с правилами неявного преобразования. Дополнительные сведения о преобразовании данных см. в разделе Преобразование типов данных (компонент Database Engine).

  • Программа bcp экспортирует значения money в символьный формат с четырьмя знаками после запятой и без символов-разделителей групп разрядов, таких как запятая. Например: для столбца типа money, содержащего значение 1 234 567,123456, будет выполнен массовый экспорт в файл данных в виде символьной строки «1234567,1235».

Параметры команд для символьного формата

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

Символьный формат поддерживается следующими параметрами командной строки.

Команда

Способ

Описание

bcp

-c

Предписывает программе bcp использовать данные в символьном формате.1

BULK INSERT

DATAFILETYPE ='char'

Использовать символьный формат при массовом импорте данных.

1 Чтобы загрузить символьные данные (-c) в формате, совместимом с клиентами предыдущих версий SQL Server, пользуйтесь ключом -V. Дополнительные сведения см. в разделе Импорт данных в собственном и символьном формате из предыдущих версий SQL Server.

Дополнительные сведения см. в разделах Программа bcp, BULK INSERT (Transact-SQL) и OPENROWSET (Transact-SQL).

ПримечаниеПримечание

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

Примеры

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

Образец таблицы

Для работы примеров таблица myTestCharData должна быть создана в образце базы данных AdventureWorks2008R2 в схеме dbo. Перед выполнением примеров следует создать эту таблицу. Чтобы создать эту таблицу, в редакторе запросов среды Среда SQL Server Management Studio выполните:

USE AdventureWorks2008R2;
GO
CREATE TABLE myTestCharData (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50)
   ); 

Для заполнения этой таблицы и просмотра полученного содержимого таблицы выполните следующие инструкции:

INSERT INTO myTestCharData(Col1,Col2,Col3)
   VALUES(1,'DataField2','DataField3');
INSERT INTO myTestCharData(Col1,Col2,Col3)
   VALUES(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestCharData

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

Чтобы выполнить экспорт данных из таблицы в файл данных, используйте программу bcp с параметром out и следующими квалификаторами.

Квалификаторы

Описание

-c

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

-t,

Задает запятую (,) в качестве признака конца поля.

ПримечаниеПримечание
По умолчанию признаком конца поля является символ табуляции (\t). Дополнительные сведения см. в разделе Определение признаков конца поля и строки.

-T

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

Следующий пример выполняет массовый экспорт данных из таблицы myTestCharData в новый файл данных myTestCharData-c.Dat в символьном формате. В качестве признака конца поля используется запятая (,). В командной строке Microsoft Windows введите:

bcp AdventureWorks2008R2..myTestCharData out C:\myTestCharData-c.Dat -c -t, -T

Применение инструкции BULK INSERT для массового импорта символьных данных

Следующий пример демонстрирует применение инструкции BULK INSERT для выполнения импорта данных из файла myTestCharData-c.Dat в таблицу myTestCharData. В редакторе запросов среды Среда SQL Server Management Studio выполните следующий запрос:

USE AdventureWorks2008R2;
GO
BULK INSERT myTestCharData 
   FROM 'C:\myTestCharData-c.Dat' 
   WITH (
      DATAFILETYPE='char',
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestCharData;
GO