A importação de banco de dados de um arquivo txt para o servidor SQL não funciona

girafa 86

Estou tentando importar o seguinte banco de dados (que está em um arquivo txt) para meu banco de dados do servidor SQL:

Banco de dados de cidades do mundo livre Maxmind

Eu defini uma tabela adequada e tentei a seguinte consulta para importar:

BULK INSERT Cities FROM 'C:\Users\***************\worldcitiespop.txt'
WITH (FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')

Mas surge o seguinte erro:

Msg 4866, nível 16, estado 8, linha 1 O carregamento em massa falhou. A coluna é muito longa no arquivo de dados para a linha 1, coluna 7. Verifique se o terminador de campo e o terminador de linha estão especificados corretamente. Msg 7301, Nível 16, Estado 2, Linha 1 Não é possível obter a interface necessária ("IID_IColumnsInfo") do provedor OLE DB "BULK" para o servidor vinculado "(nulo)".

Parece que não há um novo terminador de linha de linha. O que posso fazer para importar o banco de dados corretamente?

gofr1

Em primeiro lugar, crie um worldcitiespop.fmtarquivo com este conteúdo (o arquivo precisa de uma linha em branco no final):

10.0
7
1  SQLCHAR  0  10 ","        1  Country                SQL_Latin1_General_Cp437_BIN
2  SQLCHAR  0  100 ","        2  City                SQL_Latin1_General_Cp437_BIN
3  SQLCHAR  0  100 ","        3  AccentCity                SQL_Latin1_General_Cp437_BIN
4  SQLCHAR  0  100 ","        4  Region                SQL_Latin1_General_Cp437_BIN
5  SQLCHAR  0  10 ","        5  Population                SQL_Latin1_General_Cp437_BIN
6  SQLCHAR  0  20 ","        6  Latitude                SQL_Latin1_General_Cp437_BIN
7  SQLCHAR  0  20 "\n"      7  Longitude        SQL_Latin1_General_Cp437_BIN

Em seguida, carregue assim:

INSERT INTO Cities
SELECT  a.Country, 
        a.City, 
        a.AccentCity, 
        a.Region, 
        CAST(a.[Population] as int) as [Population],
        CAST(a.Latitude as decimal(10,7)) as Latitude, 
        CAST(a.Longitude as decimal(10,7)) as Longitude
FROM OPENROWSET( 
    BULK 'D:\worldcitiespop.txt', FORMATFILE = 'D:\worldcitiespop.fmt', FIRSTROW = 2
    ) AS a;

No meu notebook antigo, esta inserção dura cerca de 5 minutos

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

TOP lista

quentelabel

Arquivo