Copiare tabella da db a altro db

mercoledì 13 settembre 2006 - 09.51

basicdany Profilo | Expert

Ciao, a tutti, dovrei copiare i dati da una tabella di un database ad un altra tabella di un'altra database, questo senza sapere i nomi dei campi, VIA CODIVE CON VB.NET
Le due tabelle hanno la stessa struttura, come posso fare, e chiaro che il problema e che non so i nomi dei campi, altrimenti sarebbe facile farlo.
spero che questo forum possa aiutarmi.
grazie ciao

Brainkiller Profilo | Guru

>Ciao, a tutti, dovrei copiare i dati da una tabella di un database
>ad un altra tabella di un'altra database, questo senza sapere

I due database che database sono ?

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

basicdany Profilo | Expert

Ciao, sono database access 2000. come divevo mi serve copiare una i dati di una tabella di un db in un unaltra tabella di un altro db con la strassa struttura.
E possbile farlo??se si come?
grazie

Brainkiller Profilo | Guru

>Ciao, sono database access 2000. come divevo mi serve copiare
>una i dati di una tabella di un db in un unaltra tabella di un
>altro db con la strassa struttura.

Se guardi bene la INSERT di Access supporta anche l'inserimento dei records in un altro Database MDB. Questa è la sintassi:

SELECT campo1[, campo2[, ...]] INTO nuovatabella [IN databaseesterno]
FROM origine

Quindi tu puoi facilmente selezionare i campi che vuoi includere, inserire la tabella nel database destinazione così come il percorso al database destinazione ed il gioco è fatto.
Se hai dei dubbi sul fatto che cambiano i nomi di colonne, usa degli Alias.

Esempio se alla sorgente hai:
Nome
Cognome

e in destinazione hai:
Name
Surname

per fugare ogni dubbio nella Select usa qualcosa del tipo:

SELECT NOME as Name, Cognome as Surname

non dovresti avere problemi.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

basicdany Profilo | Expert

Ciao,grazie, mi chiedo però il db di destinazione diciamo come viene aperto?, non e possibile solo dalla query!,
infatti il db di origine lo apro con il dataset passandogli l'oggetto di connessione al dataset,
e quello di destinazione?, comunue provo e ti passo la query vera e propria che ho, ciao grazie.

Brainkiller Profilo | Guru

>Ciao,grazie, mi chiedo però il db di destinazione diciamo come
>viene aperto?, non e possibile solo dalla query!,

E' possibile sì, è JET che lo apre.
E il data provider che usi lo utilizza (JET), quindi dovrebbe fare tutto lui senza che tu ti colleghi al secondo DB.

Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Brainkiller Profilo | Guru

Aggiungo che funziona perfettamente è la query è la seguente:

insert into tabella1 select * from tabella1 in 'c:\\db1.mdb'

db1.mdb è il DB Destinazione.
Tu da .NET devi aprire il DB Sorgente db2.mdb e lanciare con un ExecuteNonQuery() la query qui sopra modificando naturalmente i nomi delle tabelle e i campi.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

basicdany Profilo | Expert

Ciao, ti invio la query che uso cosi puoi capirmi e darmi una mano, grazie tanto...!!

Public Sub Importa()
Try
Dim sql As String

Try

Dim cn As New OleDbConnection(ConnessioneOrigine)

' Apre la connessione.
cn.Open()

' Avvia una transazione.
tr = cn.BeginTransaction(IsolationLevel.ReadCommitted)

'prende i record della tabella prova2 e li scrive in prova
'la tabella dove scrive puo avere campi in piu da quelli di origine
'la tabella dove prende i dati non puo avere i campi diversi

sql = "INSERT INTO Prova Select * From Prova2"

' Crea il comando per la connessione corrente.
Dim cmdInsert As New OleDbCommand(sql, cn, tr)
' Esegue il comando.
Dim Record As Integer = cmdInsert.ExecuteNonQuery()

' Conferma transazione.
tr.Commit()

Catch ex As Exception
MsgBox(Err.Description)
' Annulla transazione.
tr.Rollback()
'non e avvenuto il savataggio
Finally
' Chiude la connessione.
'cn.Close()
End Try
Catch ex As Exception

End Try
End Sub

Grazie aspetto tua gentile risposta.

Brainkiller Profilo | Guru

>Ciao, ti invio la query che uso cosi puoi capirmi e darmi una
>mano, grazie tanto...!!
>Grazie aspetto tua gentile risposta.

Hai visto la Query che ti ho postato ?
Sostituiscila al posto della tua.
CIao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

basicdany Profilo | Expert

Grazie, funziona tutto.
ciao

Brainkiller Profilo | Guru

>Grazie, funziona tutto.

Ok accetta, la risposta con l'apposito link così il Thread viene marcato come risolto positivamente.
Ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
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