2016-06-15 41 views
5

Desidero selezionare alcuni record dal database informix tramite la connessione Odbc e inserirli in una tabella di database Sql.Connessione Odbc & Sql in una query

INSERT INTO SAS.dbo.disconnectiontemp 
     (meterno) 
SELECT DISTINCT met_number     
FROM Bills.dbadmin.MeterData 

Ho cercato la registrazione, ma non hanno risolto il mio problema. È possibile avere entrambe le connessioni in un unico posto?
Qualsiasi aiuto o suggerimento sarebbe apprezzato. Grazie

risposta

5

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.

+1

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

+1

@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

+0

@Kayathiri se ritieni che questa sia davvero la direzione in cui sei andato e la risposta è stata utile, contrassegna la risposta come accettata! – 1CodeRed