Importação SQL Server

SQL Server

30/06/2019

Olá Pessoal.

Sou iniciante no SQL Server e estou tentando importar um arquivo CSV mas, não estou conseguindo aparece o erro abaixo:

O tipo de valor fornecido String da origem de dados não pode ser convertido para o tipo smallint da coluna de destino especificada. (System.Data)
Falha ao converter valor de parâmetro de String em Int16. (System.Data)
Valor era muito grande ou muito pequeno para Int16. (mscorlib)

Alguém poderia me ajudar?!
Karolina

Karolina

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

30/06/2019

com certeza alguém poderá te ajudar, de forma bem genérica = pelo aviso apresentado, você está tentando gravar um conteúdo inválido para o campo.
para que você tenha uma ajuda mais precisa, seria bom você publicar a estrutura da tua tabela, algumas linhas do arquivo CSV e também a instrução que você utilizou.
GOSTEI 0
Karolina

Karolina

30/06/2019

A primeira vez que tentei importar tentei pelo assistente de importação do SQL studio, e os seguintes erros apareceram:

O tipo de valor fornecido String da origem de dados não pode ser convertido para o tipo smallint da coluna de destino especificada. (System.Data)
Falha ao converter valor de parâmetro de String em Int16. (System.Data)
Valor era muito grande ou muito pequeno para Int16. (mscorlib)

e também tentei importar pelo BULK INSERT mas não reconheceu o nome da minha planilha

USE test
GO
BULK INSERT 'FRETE_TEST' FROM 'C:\\Users\\c2523772\\Desktop\\Consulta\\TEST_PROJETO_DE_FRETE'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\\n'
);
GO

GOSTEI 0
Bruno Guelere

Bruno Guelere

30/06/2019

Bom dia,

Pela mensagem apresentada o que pode estar ocorrendo é que você está tentando gravar um numero que não está entre os valores -65536 e 65536. Essa range de valores se refere ao int16 (smallint no banco de dados). Ou ainda podem haver caracteres que não sejam números na sua string. Se contiver somente números mesmo tente trocar por int32 (int no banco de dados) ou até mesmo um int64 (bigint no banco de dados).
GOSTEI 0
Luiz Santos

Luiz Santos

30/06/2019

Boa tarde Karolina.
O que acontece, é que você já criou a tabela com os tipos que você "espera" receber.
Normalmente, quando trabalhamos com planilhas excel, ele quase sempre interpreta tudo como se fosse texto. (diga-se de passagem, você vai ter menos dor de cabeça se usar um csv)

Se quer um conselho, crie uma tabela com o tipo de dados nvarchar(255).
Assim você vai conseguir importar tudo o que estiver no seu arquivo.

Em um segundo passo, você começa a converter os tipos de acordo com a sua necessidade.
Para essa brincadeira vc vai precisar de 2 tabelas.
Uma para receber os dados, conforme estão na planilha.
Outra para receber os dados depois do tratamento final.

Outra alternativa é usar o Integration Services da Microsoft, para desenhar todo o seu processo de ETL lá dentro.

Espero ter ajudado.

Grande abraço.
GOSTEI 0
Karolina

Karolina

30/06/2019

oi Luis.

Obrigada. importei tudo como nvarchar como falou.
GOSTEI 0
POSTAR