Dare in input ad una SP una lista di valori con xls o csv

martedì 28 ottobre 2008 - 20.38

bluland Profilo | Guru

Salve,

come da titolo dovrei creare una interfaccia dove carico una lista di valori contenuti in un file xls o csv che
saranno da input di una query.
quindi invece di avere 1 solo input ne avrò multipli per lo stesso campo, l' idea che ho avuto è
quella di far importare all'utente un file xls con il nome di colonna definito da me, però poi dovrei gestire
le richieste multiple, ad esempio salvando il file con nomi diversi a seconda del client che effettua
l'upload.

Volevo chiedere se qualcuno ha risolto diversamente.

saluti
--------------------
Vincenzo PESANTE
System Engineer

alx_81 Profilo | Guru

>Salve,
ciao!

>come da titolo dovrei creare una interfaccia dove carico una
>lista di valori contenuti in un file xls o csv che
>saranno da input di una query.
fino alla versione 2005 compresa di sql server non puoi gestire input basati su "tabelle". Puoi sbilanciarti usando xml come parametro, oppure fare ponte sul CLR, per migliorare le prestazioni. Dalla versione 2008 puoi passare alle tue stored procedure anche vere e proprie tabelle.

Ad ogni modo, se devi passare tramite una procedura di importazione, puoi anche pensare di ragionare a servizi. L'utente carica il suo xls ed i dati vengono salvati su di una coda. Ti tieni salvato anche il cidice dell'utente che ha eseguito il processo. Poi un servizio gira in asincrono e scoda ogni richiesta, lanciando riga x riga la tua stored procedure..
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

bluland Profilo | Guru

>>Salve,
>ciao!
>
>>come da titolo dovrei creare una interfaccia dove carico una
>>lista di valori contenuti in un file xls o csv che
>>saranno da input di una query.
>fino alla versione 2005 compresa di sql server non puoi gestire
>input basati su "tabelle". Puoi sbilanciarti usando xml come
>parametro, oppure fare ponte sul CLR, per migliorare le prestazioni.
>Dalla versione 2008 puoi passare alle tue stored procedure anche
>vere e proprie tabelle.
>

io uso SQL srv 2000
>Ad ogni modo, se devi passare tramite una procedura di importazione,
>puoi anche pensare di ragionare a servizi.
l' idea del servizio mi piace anche perche la stessa funzionalità dovrebbe essere disegnata per piu di un
applicazione, magari al servizio oltre all'input del file xls o csv potrei indicare anche l'applicazione.

il problema che non ho mai lavorato con web service!!
esempi da sottopormi?

> L'utente carica il
>suo xls ed i dati vengono salvati su di una coda.

ma poi se creo una coda ho paura di non avere risposta in real time!?!?

>Ti tieni salvato
>anche il cidice dell'utente che ha eseguito il processo. Poi
>un servizio gira in asincrono e scoda ogni richiesta, lanciando
>riga x riga la tua stored procedure..
>--

qui devo capire bene come differenziare le varie richieste, poiche la stessa richiesta potrebbe essere
lanciata con lo stesso utente da piu client.


altri Consigli?

Grazie Ale

--------------------
Vincenzo PESANTE
System Engineer

bluland Profilo | Guru


>fino alla versione 2005 compresa di sql server non puoi gestire
>input basati su "tabelle". Puoi sbilanciarti usando xml come
>parametro, oppure fare ponte sul CLR, per migliorare le prestazioni.
>Dalla versione 2008 puoi passare alle tue stored procedure anche
>vere e proprie tabelle.

cioè gli c'è in campo del db che do in input un file tipo excel?
ma questa cosa è possibile anche con la versione express di 2008?

perche se fosse cosi potrei pensare di far installare la versione express dedicata solo a questo tipo
di query incrociandole in qualche modo con le tabelle presenti su sql srv 2000!
che ne pensi?

saluti

--------------------
Vincenzo PESANTE
System Engineer

alx_81 Profilo | Guru

>l' idea del servizio mi piace anche perche la stessa funzionalità dovrebbe essere disegnata per piu di un
>applicazione, magari al servizio oltre all'input del file xls o csv potrei indicare anche l'applicazione.
>il problema che non ho mai lavorato con web service!!
Non web.. windows. Sul server scrivi un servizio che scoda i record che hai creato nella coda.

>ma poi se creo una coda ho paura di non avere risposta in real time!?!?
Perdi sicuramente il realtime, ma ottieni scalabilità, e con AJAX puoi permetterti (magari passando ad ASP.Net 2.0) di dare dei pannelli che si aggiornano.
Oppure puoi usare i più "vecchi" iframe autoaggiornanti, che ti danno un risultato accettabile asincrono. Ma questo dipende dalla periodicità con cui fai girare il servizio..

>qui devo capire bene come differenziare le varie richieste, poiche la stessa richiesta potrebbe essere lanciata con lo stesso utente da piu client.
Se ti basta l'utente bene, altrimenti puoi salvarti l'IP..

>cioè gli c'è in campo del db che do in input un file tipo excel?
temo di non aver capito questa frase

>ma questa cosa è possibile anche con la versione express di 2008?
ehm, cosa?

che ne pensi?
Diciamo che se non hai particolari pretese, puoi pensare alla versione EXPRESS di 2008. Maggiori dettagli sulle features qui:
http://msdn.microsoft.com/en-us/library/cc645993.aspx

Vedi se ti può bastare.. Oppure, comunque, pensa ad una upgrade, non puoi rimanere a SQL 2000 per sempre

>Grazie Ale
figurati! Ciao Vincenzo!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

bluland Profilo | Guru

>>l' idea del servizio mi piace anche perche la stessa funzionalità dovrebbe essere disegnata per piu di un
>>applicazione, magari al servizio oltre all'input del file xls o csv potrei indicare anche l'applicazione.
>>il problema che non ho mai lavorato con web service!!
>Non web.. windows. Sul server scrivi un servizio che scoda i
>record che hai creato nella coda.
beh non ho lavorato neanche con i windows

>
>>ma poi se creo una coda ho paura di non avere risposta in real time!?!?
>Perdi sicuramente il realtime, ma ottieni scalabilità, e con
>AJAX puoi permetterti (magari passando ad ASP.Net 2.0) di dare
>dei pannelli che si aggiornano.
>Oppure puoi usare i più "vecchi" iframe autoaggiornanti, che
>ti danno un risultato accettabile asincrono. Ma questo dipende
>dalla periodicità con cui fai girare il servizio..

beh questo non andrebbe incontro alle specifiche,
poiche l'utente vuole una risposta in real time faccio un esempio dello scenario.

l'utente da una lista di nomi e vuole che la pagina gli ritorni tutti i cognomi di quei nomi,

ovviamente non vuole farlo uno per volta, ma in modo massivo, per questo avevo pensato ad un file xls.
ecco che poi c'è il problema di dover gestire le richieste che vengono da piu client.

quello che vorrei fare e inviare la lista o il file come parametro di input alla query
(dove trovo una query del tipo where congnomi IN(....) ) senza fare
l'upload sul server, in questo modo mi risparmierei la gestione delle varie richieste.

>>qui devo capire bene come differenziare le varie richieste, poiche la stessa richiesta potrebbe essere lanciata con lo stesso utente da piu client.
>Se ti basta l'utente bene, altrimenti puoi salvarti l'IP..
>
>>cioè gli c'è in campo del db che do in input un file tipo excel?
>temo di non aver capito questa frase

beh avevo capito che con sql 2008 gli davi in input un file e poi tutto il parsing lo faceva l'engine.
però da quello che ho visto si ha la possibilita di dare un datatable in input in modo da evitare il
parsing di ogni datarow.

il problema è come caricare i dati che sono su un file di ogni client senza doverne fare l'upload sul server?
Mi sa che dovrei cercare qualcosa lato javascript

ho visto che esiste la funzione clipboard magari ci do un occhiata,
vorrei cercare di prelevare i dati direttamente dal client e passarli alla query.
che ne pensi?
>Diciamo che se non hai particolari pretese, puoi pensare alla
>versione EXPRESS di 2008. Maggiori dettagli sulle features qui:
>http://msdn.microsoft.com/en-us/library/cc645993.aspx
>
>Vedi se ti può bastare.. Oppure, comunque, pensa ad una upgrade,
>non puoi rimanere a SQL 2000 per sempre

beh se fosse per me !! (purtroppo )


grazie Alex


--------------------
Vincenzo PESANTE
System Engineer

bluland Profilo | Guru

Ho deciso di utilizzare il metodo clipboard di javascript

saluti
--------------------
Vincenzo PESANTE
System Engineer
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5