SELECT de valores de CSV em linha no MS SQL

1

Ocasionalmente, recebo solicitações únicas para modificar alguns dados, e a solicitação vem com alguns valores em CSV. Existe uma maneira de tratar o CSV arbitrário como uma fonte de tabela ou linha de maneira rápida e fácil, mesmo como dados sequenciais?

EG, posso fazer algo como:

SELECT * FROM SomeSpecialCommand('
147074,13
153987,16
147075,3
176405,16
176437,25
176436,14
176406,14
176439,13
176407,13
') as MyInlineCSV

O que motivou isso foi uma solicitação para modificar os níveis de inventário de ~ 100 itens, e recebi um CSV com um número e uma quantidade de SKU (como acima).

    
por Chris Wenham 24.11.2009 / 21:53

3 respostas

1

Você gostaria de usar algo chamado valor de tabela definido pelo usuário função . Basicamente, você criará uma função que usa um único parâmetro nvarchar (max) e cria uma tabela retornada da entrada CSV. Existem literalmente dezenas de abordagens que você pode usar aqui (usando uma tabela de números, usando um tipo XML, usando loops, etc., etc.), mas isso tem sido completamente documentado e testado por alguns caras inteligentes da Sql , então vou apenas apontar para você. Não deixe de ler também a seção de comentários , como existem soluções alternativas e resultados de testes para diferentes tamanhos de dados, ambientes, etc. - basta escolher o que funciona melhor para você.

    
por 25.11.2009 / 17:03
0

Infelizmente, você não pode fazer isso. Você poderia criar um servidor vinculado que aponta para um arquivo do Excel. Você poderia usar isso como seu servidor vinculado 'utilitário' e salvar arquivos aleatórios como o arquivo .xls adequado e você poderá selecionar na planilha.

    
por 25.11.2009 / 00:10
0

Ele precisa estar usando o sql-server?

DBD :: CSV para o perl que resolveria modificações simples que não é necessário extrair dados de outras tabelas que já estão no seu banco de dados.

    
por 25.11.2009 / 17:13