Поделиться через


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

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

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

При массовом переносе данных между экземплярами MicrosoftSQL 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 в образце базы данных AdventureWorks в схеме dbo. Перед выполнением примеров необходимо создать эту таблицу. Для этого в редакторе запросов SQL среды SQL Server Management Studio выполните:

USE AdventureWorks;
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 AdventureWorks..myTestCharData out C:\myTestCharData-c.Dat -c -t, -T

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

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

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