Preparando dados para exportar ou importar em massa

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çãoObservaçã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 a 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.

  • Microsoft SQL Server pode usar exames paralelos para recuperar dados. Portanto, as linhas de tabela que são exportadas em massa de uma instância do SQL Server não têm a garantia de estar em qualquer ordem específica no arquivo de dados. Para ter certeza de 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. Para obter mais informações, consulte Exportando dados de uma consulta para um arquivo de dados.

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çãoObservação

A estrutura do arquivo de dados não precisa ser idêntica à estrutura da tabela SQL Server, porque 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, consulte Usando formatos nativo, de caractere ou unicode e Especificando formatos de dados para compatibilidade usando bcp..

    ObservaçãoObservaçã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 alternância - F first_rowe/ou -L last_row. Para obter mais informações, consulte Utilitário bcp.

  • 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, consulte Compreendendo arquivos no formato XML e Arquivos de formato XML de exemplo.

  • Arquivos CSV (valores separados por vírgula) não têm suporte das 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 dados de importação em massa de um arquivo (.dbf) de tabela FoxPro ou Visual FoxPro do Microsoft 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. Portanto, 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 em uma tabela do SQL Server sem otimizações de importação em massa usando o OPENROWSET com o OLE DB Provider for 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 de 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 Initializing the Text Data Source Driver, How To Use a SQL Server 7.0 Distributed Query with a Linked Server to Secured Access Databases, HOW TO: Use Jet OLE DB Provider 4.0 to Connect to ISAM Databases e How To Open Delimited Text Files Using the Jet Provider's Text.

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 deve ser acessível para operações de leitura tanto pelo perfil de segurança do processo SQL Server (se o usuário fizer logon usando SQL Server fornecido no logon) ou pelo logon do Windows Microsoft 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çãoObservaçã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.