Compartilhar via


Preparar dados para exportar ou importar em massa (SQL Server)

Esta seção descreve as considerações envolvidas no planejamento de operações de exportação em massa e os requisitos para operações de importação em massa.

Observação

Se não tiver certeza de como formatar um arquivo de dados para a importação em massa, você poderá usar o utilitário bcp para exportar dados da tabela para um arquivo de dados. A formatação de cada campo de dados neste arquivo mostra a formatação necessária para importar dados em massa na coluna da tabela correspondente. Use a mesma formatação de dados para os campos do arquivo de dados.

Considerações de formato de arquivo de dados para exportação em massa

Antes de executar uma operação da exportação em massa usando o comando bcp , considere o seguinte:

  • Quando dados são exportados para um arquivo, o comando bcp cria o arquivo de dados automaticamente usando o nome de arquivo especificado. Se esse nome de arquivo já estiver em uso, os dados que estão sendo copiados em massa para o arquivo de dados substituirão o conteúdo existente no arquivo.

  • A exportação em massa de uma tabela ou exibição para um arquivo de dados requer permissão SELECT na tabela ou exibição que estiver sendo copiada em massa.

  • O Microsoft SQL Server pode usar verificações paralelas para recuperar dados. Portanto, as linhas da tabela que são exportadas em massa de uma instância do SQL Server não têm a garantia de estarem em qualquer ordem específica no arquivo de dados. Para garantir que as linhas de tabela exportadas em massa apareçam em uma ordem específica no arquivo de dados, use a opção queryout para exportar em massa de uma consulta e especifique uma cláusula ORDER BY.

Requisitos de formato de arquivo de dados para importação em massa

Para importar dados de um arquivo de dados, o arquivo deve atender os seguintes requisitos básicos:

  • Os dados devem estar em formato de linha e coluna.

Observação

A estrutura do arquivo de dados não precisa ser idêntica à estrutura da tabela do SQL Server, porque as colunas podem ser ignoradas ou reordenadas durante o processo de importação em massa.

  • Os dados no arquivo de dados devem estar em um formato suportado como formato de caractere ou nativo.

  • Os dados podem estar em formato de caractere ou binário nativo, inclusive Unicode.

  • Para importar dados usando um comando bcp, use a instrução BULK INSERT ou INSERT... SELECT * FROM OPENROWSET(BULK...); a tabela de destino já deve existir.

  • Cada campo no arquivo de dados deve ser compatível com a coluna correspondente na tabela de destino. Por exemplo, um campo int não pode ser carregado em uma coluna datetime. Para obter mais informações, confira Formatos de dados para importação em massa ou exportação em massa (SQL Server) e Especificar formatos de dados para compatibilidade ao usar o bcp (SQL Server).

    Observação

    Para especificar um subconjunto de linhas para importar de um arquivo de dados em vez do arquivo inteiro, você pode usar um comando bcp com a opção -Ffirst_row e/ou -Llast_row. Para obter mais informações, consulte bcp Utility.

  • Para importar dados de arquivos de dados com campos de comprimento ou de largura fixos, você deve usar um arquivo de formato. Para obter mais informações, veja Arquivos de formato XML (SQL Server).

  • Os arquivos CSV (valores separados por vírgula) não têm suporte nas operações de importação em massa do SQL Server. No entanto, em alguns casos, um arquivo CSV pode ser usado como o arquivo de dados para uma importação em massa de dados no SQL Server. Observe que o terminador de campo de um arquivo CSV não tem que ser uma vírgula. Para ser usável como um arquivo de dados para importação em massa, um arquivo de CSV deve obedecer as seguintes restrições:

    • Campos de dados nunca contêm o terminador de campo.

    • Nenhum ou todos os valores em um campo de dados estão inclusos entre aspas ("").

    Para os dados de importação em massa de um arquivo (.dbf) de tabela do Microsoft FoxPro ou do Visual FoxPro ou de um arquivo de planilha (.xls) do Microsoft Excel, você precisa converter os dados em um arquivo CSV, compatível com as restrições anteriores. A extensão de arquivo normalmente é .csv. Em seguida, você pode usar o arquivo .csv como um arquivo de dados em uma operação de importação em massa do SQL Server.

    Em sistemas de 32 bits, é possível importar dados CSV para uma tabela SQL Server sem otimizações de importação em massa usando OPENROWSET com o Provedor OLE DB para Jet. O Jet trata arquivos de texto como tabelas, com o esquema definido por um arquivo schema.ini localizado no mesmo diretório da fonte de dados. Para dados CSV, um dos parâmetros no arquivo schema.ini é "FORMAT=CSVDelimited". Para usar essa solução, você precisa compreender as operações do Jet Test IISAMm (sua sintaxe de cadeia de conexão, o uso de schema.ini, as opções de configuração do Registro e assim por diante). As melhores fontes dessas informações são a Ajuda do Microsoft Access e artigos da Base de Conhecimentos (KB). Para obter mais informações, consulte Inicializando o Driver de fonte de dados de texto, Como usar uma consulta distribuída do SQL Server 7.0 com um servidor vinculado para bancos de dados de acesso protegidos, Como: usar o provedor OLE DB Jet 4.0 para se conectar aos bancos de dados ISAM e Como abrir arquivos de texto delimitados usando texto IIsam do provedor Jet.

Além disso, a importação em massa de dados de um arquivo de dados para uma tabela exige o seguinte:

  • Usuários devem ter permissões INSERT e SELECT na tabela. Os usuários também precisam de permissão ALTER TABLE quando usarem opções que requerem operações de DDL (linguagem de definição de dados), como desabilitar restrições.

  • Ao importar dados em massa usando BULK INSERT ou INSERT ... SELECT * FROM OPENROWSET (BULK...), o arquivo de dados precisa ser acessível para operações de leitura tanto pelo perfil de segurança do processo do SQL Server (se o usuário fizer logon usando o SQL Server fornecido no logon) ou pelo logon do Microsoft Windows que é usado sob segurança atribuída. Além disso, o usuário deve ter permissão de ADMINISTER BULK OPERATIONS para ler o arquivo.

Observação

Não há suporte para a importação em massa de uma exibição particionada; tentativas de fazer importação de dados em massa em uma visão particionada falharão.

Recursos externos

Como importar dados do Excel para o SQL Server

Histórico de alterações

Conteúdo atualizado
Informações complementares sobre como usar o Provedor OLE DB para Jet para importar dados CSV.

Consulte Também

Utilitário bcp
BULK INSERT (Transact-SQL)
Tipos de dados (Transact-SQL)
Usar o formato de caractere para importar ou exportar dados (SQL Server)
Usar um formato nativo para importar ou exportar dados (SQL Server)