一次查询中的 Odbc 和 Sql 连接

Posted

技术标签:

【中文标题】一次查询中的 Odbc 和 Sql 连接【英文标题】:Odbc & Sql connection in one query 【发布时间】:2016-06-15 06:44:25 【问题描述】:

我想通过 Odbc 连接从 informix 数据库中选择一些记录并将它们插入到 Sql 数据库表中。

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

我已经搜索过重新评分,但他们没有解决我的问题。是否可以在一个地方同时连接两个连接? 任何帮助或建议将不胜感激。谢谢

【问题讨论】:

【参考方案1】:

我相信 ODBC 连接是使用为特定数据库引擎(例如 Oracle、MSSQL、PSQL 等)定制的 ODBC 驱动程序建立的,因此,单个查询不能包含两个不同的数据库引擎作为查询通过 ODBC 接口运行特定的驱动程序。

但是,您可以使用任何具有 ODBC 库的编程语言中的简单脚本轻松地在代码中使用两个 ODBC 驱动程序。例如,我使用 Python 和 pyodbc 来初始化多个连接并在 MSSQL、mysql 和 PSQL 数据库之间传输数据。这是一个伪代码示例:

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)

我意识到我正在将您带往不同的方向,但希望这在某种程度上仍然会有所帮助。如果需要,很乐意提供其他示例。

【讨论】:

谢谢,我明白了我不能在同一个查询中使用它。无论如何,我通过从 odbc 检索值并将其存储在一个数组中来解决这个问题,然后我将数据从数组插入到 sqldb(有点长)。但我无法理解您伪代码的最后 3 行。也许它可以是一个更好的方法。 @Kayathiri 听起来您基本上完全按照我的建议进行操作:) 将值放入数组中是一种将它们转换为您可以使用另一个插入语句加载的格式的方法。很高兴你解决了! @Kayathiri 如果您觉得这确实是您前进的方向并且答案有帮助,请将答案标记为已接受!

以上是关于一次查询中的 Odbc 和 Sql 连接的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MySQl 的 ODBC 连接器在 MS Access 中的 VBA 中执行和查询?

是否可以使用 JDBC 到 ODBC 桥接进行 SQL 连接?

来自 ODBC Blob 的数据与来自 SQL 查询的返回不匹配

我们正在使用Sybase / ODBC如何在运行长批量SQL查询时处理断开连接?

我出现odbc连接不上的问题

Excel ODBC - SQL 查询