Import File Excel

venerdì 03 settembre 2010 - 10.23

dudu75it Profilo | Newbie

Ho un problema con SSIS e l'import di un File Excel. Il file è composto da più colonne tutte di tipo Testo, ma una in particolare contiene nelle celle o solo numeri o solo testi. Quando la prima riga di input è un numero SSIS dopo aver effettuato l'import dei dati su Db, noto che scarta le celle che hanno testi. Ma nell'ogetto Excel, presente nel SSi, sia la colonna di input, che la colonna di output sono definite di tipo Testo (50crt).
Come soluzione temporanea ho fatto una console application che aggionge il carattere apice e cosi, magicamente anche le celle che contengono solo stringhe sono prese in considerazione. Però vorrei capire se c'è modo per risolvere il problema in modo migliore.
grazie mille!!!

alx_81 Profilo | Guru

Ciao!
>Come soluzione temporanea ho fatto una console application che
>aggionge il carattere apice e cosi, magicamente anche le celle
>che contengono solo stringhe sono prese in considerazione. Però
>vorrei capire se c'è modo per risolvere il problema in modo migliore.
La procedura di importazione ti dà la possibilità di definire il mapping quando vai a scegliere la tabella da importare e quella da creare.
In quella da creare (o su cui fai l'append) come è definito il campo?

>grazie mille!!!
di nulla!

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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

dudu75it Profilo | Newbie

Nel mapping la cella è definita come testo, e nel file Excel se con il muose mi posizioni su una singola cella la formattazione mi dice che è di tipo Testo.
Però se prendo lo stesso file e faccio i passi del Wizard di SQL, anche in questro caso la colonna viene vista come numerico e se nel mapping e nella destinazione imposto la colonna come nvarchar(50) comunque i testi vengono scartati

alx_81 Profilo | Guru

>Nel mapping la cella è definita come testo, e nel file Excel
>se con il muose mi posizioni su una singola cella la formattazione
>mi dice che è di tipo Testo.
>Però se prendo lo stesso file e faccio i passi del Wizard di
>SQL, anche in questro caso la colonna viene vista come numerico
>e se nel mapping e nella destinazione imposto la colonna come
>nvarchar(50) comunque i testi vengono scartati
Che strano, ho provato con excel2010 e sql 2008.. funziona.
Riesci ad allegarmi l'excel? Hai anche la definizione della tabella?

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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

dudu75it Profilo | Newbie

il file lo trovi in allegato ed è excel2007 e qui lo script di creazioen tabella
CREATE TABLE [dbo].[WEB_Import_Host](
[ELEMENTO] [nvarchar](255) NULL,
[HOSTNAME] [nvarchar](255) NULL,
[IP] [nvarchar](50) NULL,
[DESCRIZIONE_FUNZIONE] [nvarchar](200) NULL,
[SERIAL_NUMBER] [nvarchar](255) NULL,
[ENGINEMIDDLEWARE] [nvarchar](100) NULL,
[MODELLO_HW] [nvarchar](200) NULL,
[TIPO_SO] [nvarchar](50) NULL,
[VERSIONE_SO] [nvarchar](50) NULL,
[TIPO_DB] [nvarchar](50) NULL,
[NOME_DB] [nvarchar](50) NULL,
[VALIDATOR] [nvarchar](200) NULL,
[ADMIN] [nvarchar](200) NULL,
[LOGIN] [nvarchar](7) NULL,
[TIPOIP] [nvarchar](50) NULL
) ON [PRIMARY]

GO

trappy Profilo | Newbie

che versione di sql e di excel stai usando? su sql 200o e anche 2005 ho avuto + volte lo stesso tuo problema, adesso cerco come lo avevo risolto e ti dico!

dudu75it Profilo | Newbie

Versione di Excel 2007 e sql 2008

trappy Profilo | Newbie

http://www.sqldts.com/254.aspx prova a vedere se è la stessa cosa... i sintomi paiono gli stessi, non so la cura! buona fortuna!

dudu75it Profilo | Newbie

Guardo!! spero di trovare la cura.. ma non sarpei proprio!!!

grazie lo stesso.

dudu75it Profilo | Newbie

Verificato ma l'unica soluzione che funziona è quello di aprire il file Excel e ribadire il fatto delle celle che siano di tipo testuali..
altrimenti non va!!!

GRazie lo stesso

alx_81 Profilo | Guru

>il file lo trovi in allegato ed è excel2007
quali tabelle ti danno problemi, o meglio, quali fogli excel?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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

dudu75it Profilo | Newbie

Il secondo sheet di Excel che ho postato. E' una colonna che è definita testo ma che contiene nelle celle solo numero o solo testi e sql 2008 vede tale colonna come numero e non come testo.

alx_81 Profilo | Guru

>Il secondo sheet di Excel che ho postato. E' una colonna che
>è definita testo ma che contiene nelle celle solo numero o solo
>testi e sql 2008 vede tale colonna come numero e non come testo.
Nel foglio excel, ci sono due sheet.. se intendi il primo, a me funziona tutto correttamente.
Ho provato a mettere "usa la prima riga come intestazione" ma il risultato non cambia, importa il tutto correttamente.
Nelle trasformazioni c'è quello che mi aspetto.

Come ultima prova, quando fai l'import, oltre ad indicare di lanciare il tutto immediatamente, specifica "save package" e mettilo sul disco.
In tal modo, puoi controllare quello che genera e capire dove sta l'errore.. Così almeno capiamo che cosa si inventa il motore.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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

dudu75it Profilo | Newbie

E' il secondo sheet che non funziona, più precisamente nella colonna VERSIONE SO che dev'esser di tipo testo e stringa nel Db, ma che in fase di import la vede com long.

alx_81 Profilo | Guru

>E' il secondo sheet che non funziona, più precisamente nella
>colonna VERSIONE SO che dev'esser di tipo testo e stringa nel
>Db, ma che in fase di import la vede com long.
Ho rifatto la prova, e ottengo questo caricamento:

1518x390 69Kb


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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

dudu75it Profilo | Newbie

Non so cosa dirti, in quanto quel File Excel in versione 2003, con la versione di SQL 2008, il secondo sheet, non mi importa in modo corretto la colonna Versione So. Tu cos'hai fatto?
Io ho provato anche con l'import, wizard di SQL ad importarmi il file e salvare il SSIS ma anche in questo caso mi vede la colonna di tipo Long e non Stringa.
Se mi puoi indicare quali passi hai fatto provo a farli anche io.
Solo nel caso in cui apro il file Excel, vado ulla colonna Versione So e faccio doppio clik per ogni cella che contiene un dato, salvo il file e lo importo allora va a buon fine.. Ma questa soluzione non posso considerarla valita...

alx_81 Profilo | Guru

>Solo nel caso in cui apro il file Excel, vado ulla colonna Versione
>So e faccio doppio clik per ogni cella che contiene un dato,
>salvo il file e lo importo allora va a buon fine.. Ma questa
>soluzione non posso considerarla valita...
Ho provato a farlo su di una macchina che non ha office 2010. Ma solo 2003.. ed effettivamente viene proposta la maschera di conversione (da real???? mah..).
Potresti provare a scaricare la connettività di office 2010, perchè pare che il bug sia stato risolto..

Prova a vedere con l'installazione di questi due componenti:
http://www.microsoft.com/downloads/details.aspx?familyid=7554f536-8c28-4598-9b72-ef94e038c891&displaylang=en
http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5