Esportare un db da sql server 2005 a access/excel

venerdì 22 febbraio 2008 - 11.39

ciccios100 Profilo | Junior Member

Ciao a tutti,
ragazzi mi trovo davanti un piccolo caso che nn ho mai dovuto affrontare,devo esportare un DB presente in SQL server 05 Express in Access....ma come faccio?pensavo ci fosse un interfaccia ma a quanto pare dovrei utilizzare i driver odbc.Io non l'ho mai fatto,qualcuno mi saprebbe dire quali sono i comandi da utilizzare?
Grazie mille!
Ciccio
>>Domandare è lecito,rispondere è cortesia

lbenaglia Profilo | Guru

>ragazzi mi trovo davanti un piccolo caso che nn ho mai dovuto
>affrontare,devo esportare un DB presente in SQL server 05 Express
>in Access....
Il file mdb di destinazione esiste o devi crearlo ex novo?
Nel primo caso puoi definire un linked server per popolare le tabelle, diversamente dovresti utilizzare strumenti come i SSIS che però non sono presenti nella Express Edition.

>Grazie mille!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ciccios100 Profilo | Junior Member

Ciao Lorenzo,
>Il file mdb di destinazione esiste o devi crearlo ex novo?
Il file access non esiste...potrei crearne uno con lo stesso tracciato,va bene lo stesso!
>Nel primo caso puoi definire un linked server per popolare le tabelle
Mi ritngo in questo caso?Non saprei come fare a definire un linked server,potresti aiutarmi?
diversamente dovresti utilizzare strumenti come i SSIS
>che però non sono presenti nella Express Edition.
e in questo caso come faccio?
Grazi di tutto

Ciccio
>>Domandare è lecito,rispondere è cortesia

lbenaglia Profilo | Guru

>Il file access non esiste...potrei crearne uno con lo stesso
>tracciato,va bene lo stesso!
Come?
Puoi spiegare un po' meglio quello che vuoi fare? Fatico a seguirti...

>Mi ritngo in questo caso?
Lo chiedi a me?

>Non saprei come fare a definire un linked
>server,potresti aiutarmi?
Prima spiega meglio la situazione.

> diversamente dovresti utilizzare strumenti come i SSIS
>>che però non sono presenti nella Express Edition.
>e in questo caso come faccio?
Semplice, non puoi usarli.

>Grazi di tutto
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ciccios100 Profilo | Junior Member

Ciao Lorenzo,ti spiego meglio la mia situazione:
io devo esportare questa tabella di sql server in una tabella di access. Il file .mdb per adesso non esiste,ma trattandosi di una singola tabella posso crearmi una tabella nuova con lo stesso tracciato di quella che devo esportare.
Quindi sono nella prima situazione,ma non ho mai creato un linked server e non so come si faccia....mi potresti dare un aiuto o indicare delle pagine web dove sia trattato questo argomento?spero di essere stato abbastanza chiaro,ti ringrazio cmq di tutto,ciao ciao
Ciccio
>>Domandare è lecito,rispondere è cortesia

lbenaglia Profilo | Guru

>Ciao Lorenzo,ti spiego meglio la mia situazione:
>io devo esportare questa tabella di sql server in una tabella
>di access. Il file .mdb per adesso non esiste,ma trattandosi
>di una singola tabella posso crearmi una tabella nuova con lo
>stesso tracciato di quella che devo esportare.

Come?
Con che strumento?
Una tantum e poi la popoli ogni volta con i nuovi dati?
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ciccios100 Profilo | Junior Member

>Come?
>Con che strumento?
>Una tantum e poi la popoli ogni volta con i nuovi dati?
l'esportazione deve essere fatta solo questa volta,non devo sincronizzare dati o cose del genere,devo fare una specie copia(tabella Sql Server) incolla(in una nuova tabella access).

Ciccio
>>Domandare è lecito,rispondere è cortesia

lbenaglia Profilo | Guru

>l'esportazione deve essere fatta solo questa volta,non devo sincronizzare
>dati o cose del genere,devo fare una specie copia(tabella Sql
>Server) incolla(in una nuova tabella access).

OK, ora mi è tutto più chiaro

Ti propongo 2 soluzioni:

1) Esporta con bcp.exe un file CSV con i dati contenuti nella tabella; una volta ottenuto il file utilizza Microsoft Access per creare un nuovo mdb ed importare il contenuto del file in una nuova tabella.

2) Crea con Microsoft Access un nuovo mdb con la struttura della tabella di destinazione; a questo punto utilizza la funzione OPENROWSET per popolare la tabella di destinazione con i dati della tabella di origine.

Personalmente vedo più semplice il primo. Inizia a "sbatterci la testa" e nel caso incontrerai problemi, posta delle domande specifiche.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ciccios100 Profilo | Junior Member

Ok Lorenzo,nel fine settimana inizio a cercare informazioni sulla utility bcp.exe,lunedì in ufficio la provo e se ho qualke domanda ti faccio saxe....Grazie mille,di tutto,ciao e buon fine settimana!
Ciccio
>>Domandare è lecito,rispondere è cortesia

ciccios100 Profilo | Junior Member

Ciao Lorenzo,
come ti avevo detto oggi ho provato ad utilizzare l'utility bcp.exe,tramite la documentazione che ho reperito su internet ho cercato di eseguire questa riga di comando dal prompt di dos del mio server:
>>bcp CRM.dbo.Anag out prova.csv -T -c
-T=connessione trusted,che è quella che utilizzo
-c=dovrebbe trasferire i dati in modalità carattere
l'esecuzione non riesce per questo errore:
[Microsoft][SQL Native Client]Provider named pipe:Impossibile aprire una connessione a sql server
SQLState =HYT00,NativeError=2
Erroe = [Microsoft][SQL Native Client]Si è verificato un errore durante il tentativo di stabilire una connessione al server.Durante la connessione a Sql Server 2005 questo errore può essere provocato dal fatto che nelle impostazioni predefinite di SQL Server non sono consentite.
Sono andato a controllare nelle configurazione della surface area e sono consentite le connessioni sia tramite tcp/ip che tramite named pipe....sbaglio qualcosa nella riga di comando?


Ciccio
>>Domandare è lecito,rispondere è cortesia

lbenaglia Profilo | Guru

>>>bcp CRM.dbo.Anag out prova.csv -T -c
>sbaglio qualcosa nella riga di comando?

Dato che utilizzi SQL Server Express, di default viene creata una named instance chiamata "SQLExpress".
Se non specifichi alcun server, BCP tenterà di connettersi all'istanza di default (che nel tuo caso non esiste).
Prova ad aggiungere il nome dell'istanza denominata:

bcp CRM.dbo.Anag out C:\prova.csv -T -c -S.\SQLExpress

Inoltre tieni presente che questo comando non genererà un file CSV dato che di default il separatore di colonna è il TAB.
Poco male, Microsoft Access in fase di importazione ti permetterà di selezionare anche il TAB oltre alla ";", "," ecc...

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ciccios100 Profilo | Junior Member

Ciao Lorenzo,
ho provato la tua riga di comando e in effetti funziona,ma non proprio come mi aspettavo.....Mi spiego meglio,nel file .csv oltre ai miei dati vengono importati anche dei tag HTML. Ho provato ad esportare in altri formati,ma la musica non cambia,e quando cerco di importare in access,mi viene importata una tabella di quasi 100.000 righe contro le 8100 della tabella di partenza(le 90.000 righe di differenza sono interamente pine di HTML)!non c'è un modo per eliminare questi TAG?come mai vengono importati?

Ciccio
>>Domandare è lecito,rispondere è cortesia

lbenaglia Profilo | Guru

>ho provato la tua riga di comando e in effetti funziona,ma non
>proprio come mi aspettavo.....Mi spiego meglio,nel file .csv
>oltre ai miei dati vengono importati anche dei tag HTML.

Si vede che alcune colonne della tua tabella contengono tag HTML.
BCP non fa altro che un dump su file del contenuto della tabella, non ha niente a che vedere con HTML.

>c'è un modo per eliminare questi TAG?come mai vengono importati?
Ripulisci i tuoi dati

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ciccios100 Profilo | Junior Member

Ok,con un paio di query in access ho pulito la tabella dalle righe in eccesso.Non riescco bene a capire la questione dei tag visto che la mia tabella d'origine non contiene dei tag Html,sempre quest'ultima però ha un campo text...può essere che sia proprio lui la causa della creazione di queste nuove righe righe?
Comunque con le ultime modifiche il file .mdb creato è conforme a quello di partenza,grazie ancora per tutto l'aituo che mi hai dato.......ciao!
Ciccio
>>Domandare è lecito,rispondere è cortesia

lbenaglia Profilo | Guru

>Ok,con un paio di query in access ho pulito la tabella dalle
>righe in eccesso.Non riescco bene a capire la questione dei tag
>visto che la mia tabella d'origine non contiene dei tag Html
Permettimi di dubitare

> ,sempre quest'ultima però ha un campo text...può essere che sia proprio
>lui la causa della creazione di queste nuove righe righe?
No, una colonna non genera righe a meno che non contenga lo stesso separatore di riga che tu hai utilizzato per estrarre i dati (ti ricordo che il parametro -c utilizza come separatore di colonna il TAB e come separatore di riga il CR + LF).

>Comunque con le ultime modifiche il file .mdb creato è conforme
>a quello di partenza,grazie ancora per tutto l'aituo che mi hai
>dato.......ciao!
Meno male
Accetta la risposta che chiudiamo il thread.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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