SQL Server - Correndo grandes arquivos de script
-
03-07-2019 - |
Pergunta
Eu tenho uma tabela de banco de dados em um servidor de desenvolvimento que está agora totalmente preenchido depois que eu defini-lo correndo com uma rotina de importação para um arquivo CSV que contém 1,4 milhões de linhas.
Eu corri o Database Publishing Wizard sobre a mesa, e agora eu tenho um SQL script de 286MB na minha máquina local. O problema é que eu não consigo descobrir como executá-lo. Se eu carregá-lo no SQL Server Management Studio Express recebo uma janela de alerta que diz: "A operação não pôde ser concluída".
Algumas ideias sobre como posso obter este script SQL para executar?
Solução
Running algo que grande dentro de uma única transação não é uma boa idéia. Portanto, eu recomendo quebrar o arquivo em pedaços menores e mais gerenciáveis.
Outra opção é olhar para algumas das outras maneiras de dados de importação CSV diretamente.
Outras dicas
usar a ferramenta sqlcmd para executar o arquivo ..
sqlcmd -S myServer\instanceName -i C:\myScript.sql
No caso do seu ter um "erro de script" inexplicável para grandes arquivos SQL (> 100 MB), que inclui vários INSERT, basta substituir "INSERT INTO" por "GO INSERT INTO" em seu arquivo, que irá reduzir o tamanho do transação.
Esta ferramenta ( Big SQL Script Runner ) no CodePlex irá executar qualquer arquivo de script tamanho com log e GUI.
Adicionando a resposta do Gulzar Nazim:
Se você ainda receber uma falha, tente especificar o página de códigos do seu arquivo SQL usando a opção -f
:
sqlcmd -S myServer\instanceName -d databaseName -i C:\myScript.sql -f 65001
Eu estava tentando importar um arquivo .dump do SQLite (UTF-8 por padrão), e sqlcmd manteve jogando um erro depois de encontrar o primeiro caractere especial. -f 65001
fixa-lo para mim.
Por que não usar DTS para importar o arquivo CSV diretamente?