Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O formato de caractere é recomendado quando você exporta dados em massa para um arquivo de texto que deve ser usado em outro programa ou quando você importa dados em massa de um arquivo de texto gerado por outro programa.
O formato de caractere usa o formato de dados de caractere para todas as colunas. O armazenamento de informações em formato de caractere é útil quando os dados são usados com outro programa, como uma planilha, ou quando os dados precisam ser copiados para uma instância do SQL Server de outro fornecedor de banco de dados, como o Oracle.
Observação
Quando você transfere dados em massa entre instâncias do SQL Server e o arquivo de dados contém dados de caracteres Unicode, mas não caracteres estendidos ou DBCS, use o formato de caractere Unicode. Para obter mais informações, consulte Usar o formato de caractere Unicode para importar ou exportar dados (SQL Server).
Considerações sobre o uso do formato de caractere
Ao usar o formato de caractere, considere:
Por padrão, o utilitário bcp separa os campos de dados de caracteres com o caractere de tabulação e encerra os registros com o caractere de nova linha. Para obter informações sobre como especificar terminadores alternativos, consulte Especificar terminadores de campo e linha (SQL Server).
Por padrão, antes da exportação ou importação em massa de dados de modo de caractere, as seguintes conversões são executadas:
Direção da operação em massa Conversão Exportação Converte dados em representação de caracteres. Se explicitamente solicitado, os dados são convertidos na página de código solicitada para colunas de caracteres. Se nenhuma página de código for especificada, os dados de caracteres serão convertidos usando a página de código OEM do computador cliente. Importação Converte dados de caracteres em representação nativa, quando necessário, e traduz os dados de caracteres da página de código do cliente para a página de código de uma ou mais colunas de destino. Para evitar a perda de caracteres estendidos durante a conversão, use o formato de caractere Unicode ou especifique uma página de código.
Todos os dados sql_variant armazenados em um arquivo de formato de caractere são armazenados sem metadados. Cada valor de dados é convertido para o formato char , de acordo com as regras de conversão de dados implícitos. Quando importados para uma coluna sql_variant , os dados são importados como char. Quando importados para uma coluna com um tipo de dados diferente de sql_variant, os dados são convertidos de char usando a conversão implícita. Para obter mais informações sobre conversão de dados, consulte Conversão de tipo de dados (Mecanismo de Banco de Dados).
O utilitário bcp exporta valores monetários como arquivos de dados em formato de caractere com quatro dígitos após a vírgula decimal e sem símbolos de agrupamento de dígitos, como separadores de vírgula. Por exemplo, uma coluna monetária que contém o valor
1,234,567.123456é exportada em massa para um arquivo de dados como a cadeia de caracteres1234567.1235.
Opções de comando para formato de caractere
Você pode importar dados de formato de caractere para uma tabela usando bcp, BULK INSERT (Transact-SQL) ou OPENROWSET (BULK). Para um comando bcp ou instrução BULK INSERT (Transact-SQL), você pode especificar o formato de dados na instrução. Para uma instrução OPENROWSET (BULK), você deve especificar o formato de dados em um arquivo de formato.
O formato de caractere é suportado pelas seguintes opções de comando:
| Comando | Opção | Descrição |
|---|---|---|
bcp |
-c |
Faz com que o utilitário bcp use dados de caracteres. 1 |
BULK INSERT |
DATAFILETYPE ='char' |
Use o formato de caractere ao importar dados em massa. |
OPENROWSET |
N/A | Deve usar um arquivo de formato |
1 Para carregar dados de caractere (-c) para um formato compatível com versões anteriores de clientes SQL Server, use o -V interruptor. Para obter mais informações, consulte Importar dados nativos e de formato de caractere de versões anteriores do SQL Server.
Observação
Como alternativa, você pode especificar a formatação por campo em um arquivo de formato. Para obter mais informações, consulte Formatar arquivos para importar ou exportar dados (SQL Server).
Exemplo de condições de ensaio
Os exemplos neste artigo baseiam-se na tabela e no ficheiro de formato a seguir.
Tabela de exemplo
O script a seguir cria um banco de dados de teste, uma tabela nomeada myChar e preenche a tabela com alguns valores iniciais. Execute o seguinte Transact-SQL no Microsoft SQL Server Management Studio (SSMS):
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE dbo.myChar
(
PersonID SMALLINT NOT NULL,
FirstName VARCHAR (25) NOT NULL,
LastName VARCHAR (30) NOT NULL,
BirthDate DATE,
AnnualSalary MONEY
);
-- Populate table
INSERT TestDatabase.dbo.myChar
VALUES (1, 'Anthony', 'Grosse', '1980-02-23', 65000.00),
(2, 'Alica', 'Fatnowna', '1963-11-14', 45000.00),
(3, 'Stella', 'Rossenhain', '1992-03-02', 120000.00);
-- Review data
SELECT * FROM TestDatabase.dbo.myChar;
Exemplo de arquivo de formato não-XML
O SQL Server oferece suporte a dois tipos de arquivo de formato: formato não XML e formato XML. O formato não XML é o formato original suportado por versões anteriores do SQL Server. Para obter mais informações, consulte Usar arquivos de formato não XML (SQL Server). O comando a seguir usa o utilitário bcp para gerar um arquivo de formato não-XML, myChar.fmt, com base no esquema de myChar. Para usar um comando bcp para criar um arquivo de formato, especifique o FORMAT argumento e use nul em vez de um caminho de arquivo de dados. A opção de formato também requer a -f opção. Além disso, para este exemplo, o qualificador c é usado para especificar dados de caracteres e T é usado para especificar uma conexão confiável usando segurança integrada.
Em um prompt de comando, digite o seguinte comando:
bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c
REM Review file
Notepad D:\BCP\myChar.fmt
Importante
Verifique se o arquivo de formato não XML termina com um retorno de carro\feed de linha. Caso contrário, poderá receber a seguinte mensagem de erro:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Exemplos
Os exemplos a seguir utilizam o banco de dados e os ficheiros de formato criados anteriormente neste artigo.
Usar BCP e formato de caracteres para exportar dados
-c switch e OUT comando.
O arquivo de dados criado neste exemplo é usado em todos os exemplos subsequentes.
Em um prompt de comando, digite o seguinte comando:
bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c
REM Review results
NOTEPAD D:\BCP\myChar.bcp
Usar bcp e formato de caractere para importar dados sem um arquivo de formato
O -c switch e o IN comando. Em um prompt de comando, digite o seguinte comando:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"
REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"
Usar bcp e formato de caracteres para importar dados com um ficheiro de formato não XML
Os interruptores -c e -f e o comando IN. Em um prompt de comando, digite o seguinte comando:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"
REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -f D:\BCP\myChar.fmt -T
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"
Usar BULK INSERT e modo de caracteres sem um arquivo de definição de formato
O DATAFILETYPE argumento. Execute o seguinte Transact-SQL no Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar FROM 'D:\BCP\myChar.bcp'
WITH (DATAFILETYPE = 'Char');
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
Use BULK INSERT e formato de caracteres com um ficheiro de formato não XML
Este é um exemplo do FORMATFILE argumento. Execute o seguinte Transact-SQL no Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar FROM 'D:\BCP\myChar.bcp'
WITH (FORMATFILE = 'D:\BCP\myChar.fmt');
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
Utilize OPENROWSET e formato de carater com um ficheiro de formato não-XML
Um exemplo do FORMATFILE argumento. Execute o seguinte Transact-SQL no Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
INSERT INTO TestDatabase.dbo.myChar
SELECT * FROM OPENROWSET (
BULK 'D:\BCP\myChar.bcp',
FORMATFILE = 'D:\BCP\myChar.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
Tarefas relacionadas
Para usar formatos de dados para importação ou exportação em massa:
- Importar dados nativos e de formato de caractere de versões anteriores do SQL Server
- Usar formato nativo para importar ou exportar dados (SQL Server)
- Usar o formato de caractere Unicode para importar ou exportar dados (SQL Server)
- Usar o formato nativo Unicode para importar ou exportar dados (SQL Server)