Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [SQL Server] import dati da excel 2007 in SQL Server 2008

    Ciao a tutti,


    ho effettuato una ricerca nel forum "database" prima di creare questo nuovo thread, non ho trovato discussioni, mi auguro non mi siano sfuggite: come da titolo, vorrei importare dati contenuti in un file excel in sql server.
    Il file è una cartella di lavoro excel composta da più fogli, dati_da_importare_2014.01.04.xlsx, contiene dati di tipo date, int e varchar oltre al nome delle colonne.
    Il database si chiama db_01.


    Il primo metodo che ho trovato è:


    Management Studio -> tx dx sul database -> Attività -> Importa dati... -> Origine dati -> Microsoft Excel -> Percorso file di excel -> ...\nome dati_da_importare_2014.01.04.xlsx -> lascio flaggato Nomi di colonna nella prima riga -> Avanti -> Avanti -> Avanti -> seleziono i nomi dei fogli che voglio importare* -> Modifica mapping... -> modifico il "Tipo" dato assegnato alle colonne -> OK -> Avanti -> Avanti -> Fine -> Fine -> Chiudi


    Vorrei sapere se esiste modo di automatizzare il tutto.
    A regime, desidererei creare un'interfaccia (in php) che permetta ad un utente di fare l'upload di un file xls/xlsx il cui contenuto venga poi importato nel db, quindi lavorato tramite delle stored procedure.

    Ringrazio in anticipo chiunque vorrà dedicare il suo tempo e le sue conoscenze per aiutarmi, buona serata, ciao .




    * in questo punto, nella finestra "Selezione tabelle e viste di origine", i nomi dei fogli excel compaiono duplicati e con l'aggiunta del carattere $ in fondo, ad esempio:
    'anno_1997$'
    'anno_1997$_xlnm#_FilterDatabase' <- questo nome è "duplicato"
    'anno_1998$'
    'anno_1998$_xlnm#_FilterDatabase' <- questo nome è "duplicato"
    '...'
    nella colonna "Destinazione" modifico il nome da [dbo].[anno_1997$] a [dbo].[anno_1997], etc... come mai inserisce il simbolo $ ?

  2. #2
    gli oggetti excel cui viene accodato il simbolo $ rappresentano i fogli di lavoro, ad es. Sheet1$

  3. #3
    Attraverso Importazione/Esportazione guidata SQL Server, nella finestra Esegui pacchetto (il penultimo fine), in basso e riportato il messaggio:
    "In SQL Server Express, Web o Workgroup è possibile eseguire ma non salvare il pacchetto creato tramite Importazione/Esportazione guidata. Per salvare i pacchetti creati tramite la procedura guidata, è necessario eseguire l'aggiornamento a SQL Server Standard, Enterprise, Developer o Evaluation."

    Immagino che potendo salvare il pacchetto se ne potrebbe creare un "job" tramite Integration Services...

  4. #4
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    Quote Originariamente inviata da chiribbio Visualizza il messaggio
    Immagino che potendo salvare il pacchetto se ne potrebbe creare un "job" tramite Integration Services...
    Esatto, ma non è l'unico modo (nel caso tu avessi una versione di SQL che non lo supporta)

    Puoi ad esempio configurare un linked server verso Excel (e quindi poi usare una normale stored procedure) o altro
    Vedi ad esempio qui: http://support.microsoft.com/kb/321686 (si riferisce a versioni precedenti di SQL ma i suggerimenti sono ancora validi)

  5. #5
    Ciao comas, anzitutto grazie per la risposta.

    Ero capitato anch'io su quell'articolo, da lì sono arrivato al 306397 che dovrebbe spiegare "How to use Excel with SQL Server linked servers and distributed queries".
    Ho allora notato queste due strade:
    1) Using SQL Server Management Studio or Enterprise Manager to configure an Excel data source as a linked server
    2) Using a stored procedure to configure an Excel data source as a linked server

    In entrambi i casi però sto imbattendomi in questi due errori che non riesco a superare (ad es. ho seguito http://support.microsoft.com/kb/814398/it):

    Messaggio 7399, livello 16, stato 1, procedura sp_tables_ex, riga 41
    The OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "PROVA_SP" reported an error.
    The provider did not give any information about the error.


    Messaggio 7303, livello 16, stato 1, procedura sp_tables_ex, riga 41
    Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "PROVA_SP".



    Un'altra domanda: se alla fine riuscissi a collegare il file excel come linked server, posso poi farci query da Management Studio proprio come su qualsiasi altro db?

    Grazie.

  6. #6
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    In questo forum uno ha gli stessi tuoi messaggi d'errore http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=167623 e gli suggeriscono un link (ad un altro forum) in cui più di una persona dice di aver risolto riavviando il server (quindi il servizio SQL)
    Tu hai provato ?

    Risposta alla domanda: si, poi sarebbe come fare una query da un qualunque database o tabella; vedi ad esempio http://www.mssqltips.com/sqlserverti...y-excel-files/

    Prova a vedere anche questo: http://blogs.msdn.com/b/spike/archiv...ied-error.aspx

    Qual'è la tua situazione ? Con che utente viene eseguito il servizio SQL Server ? Con che utente ti colleghi al PC e provi a configurare il linked server e ad eseguire la query ?
    Ultima modifica di comas17; 05-01-2014 a 21:31

  7. #7
    Grazie comas per i tuoi consigli.

    Ho provato molto.. autorizzazioni per gli utenti delle cartelle che contengono i file, impostazione dell'account di avvio del servizio SQL Server, reinstallazioni su 2 laptop diversi, proprietà dei provider, variabili d'ambiente, ... alla fine faccio una prova "stupida" trovando che con file .xls ('97-2003) funziona mentre con file .xlsx no... maremma maialina! E m'è venuto in mente di provarlo solo dopo aver riletto il tuo link su mssqltips.com

    Installati i driver Microsoft.ACE.OLEDB.12.0 funziona, a domani per prove + approfondite, per ora mi getto nel letto.
    Ultima modifica di chiribbio; 06-01-2014 a 05:09

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.