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


Использование символьного формата для импорта и экспорта данных (SQL Server)

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

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

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

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

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

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

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

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

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

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

    Экспорт

    Преобразует данные в символьное представление. Если это явно запрошено, данные в символьных столбцах преобразуются в требуемую кодовую страницу. Если кодовая страница не указана, символьные данные преобразуются в кодовую страницу изготовителя оборудования (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).

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

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

Примеры

Следующие примеры показывают, как выполнять массовый экспорт символьных данных с помощью команды 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). Дополнительные сведения см. в разделе Определение признаков конца поля и строки (SQL Server).

-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

Связанные задачи

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

См. также

Справочник

Программа bcp

BULK INSERT (Transact-SQL)

OPENROWSET (Transact-SQL)

Типы данных (Transact-SQL)

Основные понятия

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