Trasferire Dati da una tabella ad un altra tra due database diversi my...

martedì 18 settembre 2012 - 21.24
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Visual Studio 2008  |  MySQL 5.5

Mau67 Profilo | Expert

Ciao al forum,
ho la necessità di costruire una procedura per trasferire una grossa quantità di dati da una tabella di un database mysql che comprende circa 60 campi, a più tabelle circa 7 cioè ho spezzato la tabella che contiene i 60 campi un 7 tabelle quindi con la selezione in 2 listview vorrei trasferire i dati selezionando i campi che mi interessano dalla tabella grande alle tabelle più piccole.
Chiedo un aiuto grazie
Mau67

alx_81 Profilo | Guru

>Ciao al forum,
Ciao

>ho la necessità di costruire una procedura per trasferire una
>grossa quantità di dati da una tabella di un database mysql che
>comprende circa 60 campi, a più tabelle circa 7 cioè ho spezzato
>la tabella che contiene i 60 campi un 7 tabelle quindi con la
>selezione in 2 listview vorrei trasferire i dati selezionando
>i campi che mi interessano dalla tabella grande alle tabelle
>più piccole.
puoi spiegare un po' meglio? tabella di 60 campi mysql, splittata in 7 tabelle.. dove stanno?
E poi? Non ho capito che ci vuoi fare..

>Chiedo un aiuto grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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

Mau67 Profilo | Expert

Praticamente i database sono 2 devo trasferire i dati presenti nel database 1 al database 2.
Nel database 1 c'è una tabella con 60 campi, quindi nel database 2 quella tabella lo divisa in altre 7 tabelle e dovrei trasferire i dati della tabella grossa del database 1 nelle 7 tabelle del database 2 seleziono i campi che mi interessano e trasferisco i dati.

Mau67

alx_81 Profilo | Guru

>Praticamente i database sono 2 devo trasferire i dati presenti
>nel database 1 al database 2.
>Nel database 1 c'è una tabella con 60 campi, quindi nel database
>2 quella tabella lo divisa in altre 7 tabelle e dovrei trasferire
>i dati della tabella grossa del database 1 nelle 7 tabelle del
>database 2 seleziono i campi che mi interessano e trasferisco
>i dati.
Bisognerebbe capire quali tool ti fornisce mysql.
da mysql a mysql, credo che tu possa farlo con una query diretta.. tra un db e l'altro.
Indicando anche il nome dei db nella query.
Se sono su server diversi devi vedere se poi puoi fare qualcosa di equivalente ad un "linked server" di sql..

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

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

Mau67 Profilo | Expert

i database sono nello stesso server come faccio la query diretta?
Mau67

alx_81 Profilo | Guru

>i database sono nello stesso server come faccio la query diretta?
Prova, come ti dicevo, ad usare il nome completo (che per mysql dovrebbe essere SELECT * FROM nomedb.nometabella se non ricordo male).
secondo me poi puoi fare semplici INSERT SELECT, devi provare.. in sql non avrei problemi a fare una cosa tipo:

INSERT INTO T1 (campi)
SELECT campi FROM DB_2.Schema.T2




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

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

Mau67 Profilo | Expert

DB_2.Schema.T2 DB_2 (altro Database) Schema (cosè) T2 (cosè)

grazie


Mau67

Mau67 Profilo | Expert

Ho fatto così:

SQL = "INSERT INTO " & ListView2.CheckedItems(0).Text & " (" & TextBox2.Text & ")" & _
"SELECT (" & TextBox1.Text & ") FROM " & ListView1.CheckedItems(0).Text & ""

le listview prendono il nome delle tabelle e le textbox il nome dei campi
lancio il debug e visualizzo in un msgbox la query e sembra corretta poi continuo il debug e mi restituisce l'errore che trove il nome della tabella dove inserisco i dati con doppio nome cosi Videoterminali.videotreminali ma nella query non lo fà vedere non capisco

Questo è tutto il codice

Private Sub Trasferisci()

Dim conn As New MySqlConnection("host=" & m_ParametroHost & ";" & _
"username=" & m_ParametroUserName & ";" & _
"password=" & m_ParametroPassword & ";" & _
"database=" & ListView2.CheckedItems(0).Text & ";" & _
"port=3306")

conn.Open()

Dim myCommand As New MySqlCommand 'dichiaro il comando
Dim myReader As MySqlDataReader 'dichiaro il datareader
Dim SQL As String 'dichiaro la stringa sql

'creo la Query
SQL = "INSERT INTO " & ListView2.CheckedItems(0).Text & " (" & TextBox2.Text & ")" & _
"SELECT (" & TextBox1.Text & ") FROM " & ListView1.CheckedItems(0).Text & ""
Try

myCommand.Connection = conn 'indico la connessione al comando
myCommand.CommandText = SQL 'assegno la stringa sql

myReader = myCommand.ExecuteReader 'assegno l'esecuzione al reader

While myReader.Read 'il reader cicla i risultati della query

'CICLO DEI RISULTATI DELLA QUERY

End While


Catch myerror As MySqlException
MsgBox("Errore nella lettura dei dati dal database: " & myerror.Message)

End Try
conn.Close()
' End If
'Next
End Sub

allego file
Mau67

alx_81 Profilo | Guru

>Ho fatto così:
>le listview prendono il nome delle tabelle e le textbox il nome
>dei campi
>lancio il debug e visualizzo in un msgbox la query e sembra corretta
>poi continuo il debug e mi restituisce l'errore che trove il
>nome della tabella dove inserisco i dati con doppio nome cosi
>Videoterminali.videotreminali ma nella query non lo fà vedere
>non capisco
In quello che componi non c'è il nome del database nella tabella che devi gestire (o insert o select), è normale?
Perchè poi invece l'errore sembra che controlli proprio su un altro db..
Vedi se questo ti può aiutarti:
http://stackoverflow.com/questions/338251/how-do-i-enable-cross-database-joins-in-mysql
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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