Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Собственный формат Юникода полезен при копировании сведений из одной установки Microsoft SQL Server в другую. Использование собственного формата для несимвольных данных позволяет сэкономить время благодаря исключению ненужных преобразований типов данных в символьный формат и обратно. Использование символьного формата Юникода для всех символьных данных предотвращает потерю дополнительных символов в ходе массовой передачи данных между серверами, использующими различные кодовые страницы. Файл данных в формате Юникода может быть прочитан с использованием любого метода массового импорта.
Рекомендуется использовать формат Юникод для передачи данных в массиве между несколькими экземплярами SQL Server с использованием файлов данных, содержащих расширенные символы или символы DBCS. В отношении несимвольных данных собственный формат Юникода использует собственные (для базы данных) типы данных. Для символьных данных, таких как char, nchar, varchar, nvarchar, текст, varchar(max), nvarchar(max)и ntext, собственный формат Юникод использует символьный формат Юникод.
Данные типа sql_variant , которые хранятся в виде инструкции SQLVARIANT в файле собственного формата Юникод, функционируют точно так же, как в файле данных собственного формата, за исключением того, что значения типа char и varchar преобразуются в nchar и nvarchar, что требует вдвое больше места для хранения столбцов, подлежащих преобразованию. В процессе массового импорта в столбец таблицы исходные метаданные сохраняются, а значения преобразуются обратно в исходные типы данных char и varchar .
Параметры команд для собственного формата Юникода
Данные собственного формата Юникода можно импортировать в таблицу с помощью bcp, BULK INSERT или OPENROWSET BULK.
- Для команды bcp или инструкции BULK INSERT можно указать формат данных в инструкции.
- Для инструкции OPENROWSET BULK необходимо указать формат данных в файле формата.
Собственный формат Юникода поддерживается следующими параметрами командной строки:
Команда | Вариант | Описание |
---|---|---|
bcp |
-N |
Вызывает, чтобы утилита bcp использовала нативный формат Юникода, который использует собственные (баз данных) типы данных для всех несимвольных данных и формат символьных данных Юникода для всех символов (char, nchar, varchar, nvarchar, text и ntext). |
BULK INSERT |
DATAFILETYPE ='widenative' |
Собственный формат Юникода используется при массовом импорте данных. |
OPENROWSET |
Н/П | Требуется использовать файл форматирования. |
Примечание.
Также в файле форматирования можно указать форматирование для каждого поля. Дополнительные сведения см. в разделе "Формат файлов для импорта или экспорта данных" (SQL Server).
Пример условий теста
Примеры в этом разделе основаны на примере таблицы myWidenative
и файла myWidenative.fmt
форматирования. Замените локальные пути к файлам на локальный путь к файлу в системе.
Пример таблицы
Следующий скрипт создает тестовую базу данных, таблицу с именем myWidenative
и заполняет таблицу некоторыми начальными значениями. Выполните следующую команду Transact-SQL:
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE dbo.myWidenative (
PersonID smallint NOT NULL,
FirstName nvarchar(25) NOT NULL,
LastName nvarchar(30) NOT NULL,
BirthDate date,
AnnualSalary money
);
-- Populate table
INSERT TestDatabase.dbo.myWidenative
VALUES (1, N'ϴAnthony', N'Grosse', '02-23-1980', 65000.00),
(2, N'❤Alica', N'Fatnowna', '11-14-1963', 45000.00),
(3, N'☎Stella', N'Rossenhain', '03-02-1992', 120000.00);
-- Review Data
SELECT * FROM TestDatabase.dbo.myWidenative;
Пример файла форматирования в формате, отличном от XML
SQL Server поддерживает два типа файлов форматирования: файлы форматирования в формате, отличном от XML, и XML-файлы форматирования. Формат не-XML является исходным форматом, поддерживаемым более ранними версиями SQL Server. Ознакомьтесь с Используйте файлы форматов, отличных от XML (SQL Server) для получения подробной информации. Следующая команда будет использовать служебную программу bcp для создания файла форматирования myWidenative.fmt
в формате, отличном от XML, на основе схемы myWidenative
.
- Чтобы использовать команду bcp для создания файла форматирования, укажите аргумент
format
и используйтеnul
вместо пути к файлу данных. - Для параметра форматирования также требуется параметр
-f
. -
c
используется для указания символьных данных -
T
используется для указания надежного подключения с помощью интегрированной безопасности.
В командной строке введите следующие команды:
bcp TestDatabase.dbo.myWidenative format nul -f D:\BCP\myWidenative.fmt -T -N
REM Review file
Notepad D:\BCP\myWidenative.fmt
Внимание
Убедитесь, что файл в формате, отличном от XML, заканчивается символом перевода строки. В противном случае, скорее всего, появится следующее сообщение об ошибке:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Примеры
В приведенных ниже примерах используется база данных и файлы форматирования, созданные ранее.
Использование bcp и собственного формата Юникода для экспорта данных
Переключатель -N
и команда OUT
.
Файл данных, созданный в этом примере, будет использоваться во всех последующих примерах.
В командной строке введите следующие команды:
bcp TestDatabase.dbo.myWidenative OUT D:\BCP\myWidenative.bcp -T -N
REM Review results
NOTEPAD D:\BCP\myWidenative.bcp
Использование собственного формата bcp и Юникода для импорта данных без файла форматирования
Переключатель -N
и команда IN
.
В командной строке введите следующие команды:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myWidenative;"
REM Import data
bcp TestDatabase.dbo.myWidenative IN D:\BCP\myWidenative.bcp -T -N
REM Review results is SSMS
Используйте собственный формат bcp и Юникод для импорта данных с файлом формата, отличным от XML
Переключатели -N
и -f
и команда IN
.
В командной строке введите следующие команды:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myWidenative;"
REM Import data
bcp TestDatabase.dbo.myWidenative IN D:\BCP\myWidenative.bcp -f D:\BCP\myWidenative.fmt -T -N
REM Review results is SSMS
Используйте BULK INSERT и нативный формат Unicode без файла форматирования
Аргумент DATAFILETYPE
.
Выполните следующий код Transact-SQL в Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myWidenative; -- for testing
BULK INSERT TestDatabase.dbo.myWidenative
FROM 'D:\BCP\myWidenative.bcp'
WITH (DATAFILETYPE = 'widenative' );
-- review results
SELECT * FROM TestDatabase.dbo.myWidenative;
Используйте BULK INSERT и встроенный формат Юникода с файлом форматирования в неконечном формате XML.
Аргумент FORMATFILE
.
Выполните следующий код Transact-SQL в Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myWidenative; -- for testing
BULK INSERT TestDatabase.dbo.myWidenative
FROM 'D:\BCP\myWidenative.bcp'
WITH ( FORMATFILE = 'D:\BCP\myWidenative.fmt' );
-- review results
SELECT * FROM TestDatabase.dbo.myWidenative;
Используйте OPENROWSET и собственный формат Юникода с файлом формата, не относящимся к XML.
Аргумент FORMATFILE
.
Выполните следующий код Transact-SQL в Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myWidenative; -- for testing
INSERT INTO TestDatabase.dbo.myWidenative
SELECT * FROM OPENROWSET (
BULK 'D:\BCP\myWidenative.bcp',
FORMATFILE = 'D:\BCP\myWidenative.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myWidenative;
Связанные задачи
Чтобы использовать форматы данных для массового импорта или массового экспорта:
- Импорт данных собственного и символьного формата из более ранних версий SQL Server
- Использование формата символов для импорта или экспорта данных (SQL Server)
- Использование собственного формата для импорта или экспорта данных (SQL Server)
- Использование формата символов Юникода для импорта или экспорта данных (SQL Server)