Preparar dados para exportação ou importação em massa
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
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 tiver dúvidas sobre as instruções para formatar um arquivo de dados para a importação em massa, use o utilitário bcp para exportar os 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 sobre 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 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 mostrar as linhas de tabela exportadas em massa 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, instrução
BULK INSERT
, ou instruçãoINSERT ... 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, veja 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 o parâmetro
-F <first_row>
e/ou o parâmetro-L <last_row>
. Para obter mais informações, consulte bcp Utility.Para importar dados de arquivos de dados com campos de comprimento ou de largura fixos, use um arquivo de formato. Para obter mais informações, veja Arquivos de formato XML (SQL Server).
A partir do SQL Server 2017 (14.x), um arquivo CSV pode ser usado como o arquivo de dados para uma importação em massa de dados para o SQL Server. O terminador de campo de um arquivo CSV não precisa ser uma vírgula (
,
). O arquivo CSV deve estar em conformidade com as seguintes restrições:Os campos de dados não podem conter o terminador de campo.
Se você precisar colocar algum campo entre aspas (
""
), deverá colocar todos os campos de dados entre aspas.Para importar dados em massa de um arquivo de tabela do Microsoft FoxPro ou do Visual FoxPro ou de um (
.dbf
) arquivo de planilha do Microsoft Excel (.xls), 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.Nos sistemas de 32 bits (SQL Server 2014, 12.x, e versões anteriores), é possível importar os dados CSV para uma tabela do SQL Server sem otimizações de importação em massa usando o 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 arquivoschema.ini
seria"FORMAT=CSVDelimited"
. Para usar essa solução, você precisa compreender como o Jet Text IISAM opera (a sintaxe de cadeia de conexão, o uso deschema.ini
, as opções de configuração do registro etc.). As melhores fontes dessas informações são a Ajuda do Microsoft Access e os artigos da base de dados (base de informações). Para obter mais informações, consulte Inicializando o driver da fonte de dados de texto, Como usar uma consulta distribuída do SQL Server 7.0 com um servidor vinculado aos bancos de dados de acesso protegidos, COMO usar o Jet OLE DB Provider 4.0 para conectar aos bancos de dados ISAMe Como abrir arquivos de texto delimitados usando o Text II sam do Jet Provider.
Além disso, a importação em massa de dados de um arquivo de dados para uma tabela apresenta os seguintes requisitos:
Usuários devem ter permissões
INSERT
eSELECT
na tabela. Os usuários também precisam de permissãoALTER 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
ouINSERT ... 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 logon fornecido no SQL Server) como pelo logon do Microsoft Windows que é usado sob segurança atribuída. Além disso, o usuário deve ter a permissãoADMINISTER 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.