Credo che una connessione ODBC sia realizzata utilizzando un driver ODBC personalizzato per il motore DB specifico (ad es. Oracle, MSSQL, PSQL, ecc.), E quindi una sola query non può contenere due diversi motori di database come la query viene eseguita attraverso un driver specifico attraverso l'interfaccia ODBC.
Tuttavia, è possibile utilizzare facilmente due driver ODBC sul codice utilizzando uno script semplice in qualsiasi linguaggio di programmazione che disponga di una libreria ODBC. Ad esempio, io uso Python insieme a pyodbc
per inizializzare più connessioni e trasferire dati tra database MSSQL, MySQL e PSQL. Ecco un esempio di pseudo-codice:
import pyodbc
psql_cursor = pyodbc.connect('<PSQL_ODBC_CONNECTION_STRING>').cursor()
mysql_cursor = pyodbc.connect('<MYSQL_ODBC_CONNECTION_STRING>').cursor()
result_set = mysql_cursor.execute('<SOME_QUERY>').fetchall()
to_insert = <.... Some code to transform the returned data if needed ....>
psql_cursor = psql_cursor.execute('insert into <some_table> VALUES (%s)' % to_insert)
mi rendo conto che ti sto prendendo in una direzione diversa, ma spero che questo è ancora utile in qualche modo. Felice di fornire altri esempi, se necessario.
Thx, ho capito che non posso usarlo nella stessa query. Comunque risolvo questo problema recuperando il valore da odbc e memorizzandolo in un array, quindi inserisco i dati dall'array a sqldb (bit long way). Ma non riuscivo a capire le ultime 3 righe del tuo pseudo-codice. Può essere che possa essere un modo migliore. – Kayathiri
@Kayathiri sembra che tu stia facendo fondamentalmente esattamente quello che ho suggerito :) Mettere i valori in un array è un modo di trasformarli in un formato che puoi caricare usando un altro insert statemnt. Sono contento che l'hai risolto! – 1CodeRed
@Kayathiri se ritieni che questa sia davvero la direzione in cui sei andato e la risposta è stata utile, contrassegna la risposta come accettata! – 1CodeRed