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

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

Примечание

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

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

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

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

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

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

    Направление массовой операции Преобразование
    Экспорт Преобразует данные в символьное представление. Если это явно запрошено, данные в символьных столбцах преобразуются в требуемую кодовую страницу. Если кодовая страница не указана, символьные данные преобразуются в кодовую страницу изготовителя оборудования (OEM) клиентского компьютера.
    Импорт Если необходимо, преобразует символьные данные в собственное представление, а также преобразует данные из кодовой страницы клиента в кодовую страницу целевого столбца.
  • Чтобы предотвратить потерю дополнительных символов при преобразовании, применяйте символьный формат Юникода либо укажите кодовую страницу.

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

  • Служебная программа 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...) нужно указать формат данных в файле форматирования.

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

Get-Help Параметр Описание
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