{"id":13529721,"url":"https://github.com/taosdata/taos-connector-odbc","last_synced_at":"2025-04-23T20:32:00.302Z","repository":{"id":62918315,"uuid":"544885367","full_name":"taosdata/taos-connector-odbc","owner":"taosdata","description":"odbc connector for tdengine","archived":false,"fork":false,"pushed_at":"2025-04-19T11:33:40.000Z","size":2670,"stargazers_count":12,"open_issues_count":2,"forks_count":4,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-19T16:52:37.263Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taosdata.png","metadata":{"files":{"readme":"README-CN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-10-03T12:04:14.000Z","updated_at":"2025-03-31T11:22:49.000Z","dependencies_parsed_at":"2023-11-17T03:27:53.429Z","dependency_job_id":"b6c6d7c4-a4dc-4914-a652-b85b36de39f6","html_url":"https://github.com/taosdata/taos-connector-odbc","commit_stats":null,"previous_names":["taosdata/taos_odbc","freemine/taos_odbc","taosdata/taos-connector-odbc"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taosdata%2Ftaos-connector-odbc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taosdata%2Ftaos-connector-odbc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taosdata%2Ftaos-connector-odbc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taosdata%2Ftaos-connector-odbc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taosdata","download_url":"https://codeload.github.com/taosdata/taos-connector-odbc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250177615,"owners_count":21387631,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T07:00:38.822Z","updated_at":"2025-04-23T20:32:00.294Z","avatar_url":"https://github.com/taosdata.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- omit in toc --\u003e\n# TDengine ODBC Connector\n\n![GitHub commit activity](https://img.shields.io/github/commit-activity/m/taosdata/taos-connector-odbc)\n![GitHub License](https://img.shields.io/github/license/taosdata/taos-connector-odbc)\n![GitHub Tag](https://img.shields.io/github/v/tag/taosdata/taos-connector-odbc?label=latest)\n\u003cbr /\u003e\n[![Twitter Follow](https://img.shields.io/twitter/follow/tdenginedb?label=TDengine\u0026style=social)](https://twitter.com/tdenginedb)\n[![YouTube Channel](https://img.shields.io/badge/Subscribe_@tdengine--white?logo=youtube\u0026style=social)](https://www.youtube.com/@tdengine)\n[![Discord Community](https://img.shields.io/badge/Join_Discord--white?logo=discord\u0026style=social)](https://discord.com/invite/VZdSuUg4pS)\n[![LinkedIn](https://img.shields.io/badge/Follow_LinkedIn--white?logo=linkedin\u0026style=social)](https://www.linkedin.com/company/tdengine)\n[![StackOverflow](https://img.shields.io/badge/Ask_StackOverflow--white?logo=stackoverflow\u0026style=social\u0026logoColor=orange)](https://stackoverflow.com/questions/tagged/tdengine)\n\n简体中文 | [English](./README.md)\n\n\u003c!-- omit in toc --\u003e\n## 目录\n- [1. 简介](#1-简介)\n- [2. 文档](#2-文档)\n- [3. 前置条件](#3-前置条件)\n  - [3.1 Windows](#31-windows)\n  - [3.2 Linux](#32-linux)\n  - [3.3 macOS](#33-macos)\n- [4. 构建和安装](#4-构建和安装)\n  - [4.1 Windows](#41-windows)\n  - [4.2 Linux/macOS](#42-linuxmacos)\n- [5. 测试](#5-测试)\n  - [5.1 运行测试](#51-运行测试)\n    - [5.1.1 Windows](#511-windows)\n    - [5.1.2 Linux/macOS](#512-linuxmacos)\n  - [5.2 添加用例](#52-添加用例)\n  - [5.3 性能测试](#53-性能测试)\n- [6. CI/CD](#6-cicd)\n- [7. 提交 Issue](#7-提交-issue)\n  - [7.1 必要信息](#71-必要信息)\n  - [7.2 额外信息](#72-额外信息)\n- [8. 提交 PR](#8-提交-pr)\n- [9. 引用](#9-引用)\n- [10. 附录](#10-附录)\n- [11. 许可证](#11-许可证)\n\n\n## 1. 简介\n`taos-connector-odbc` 是 TDengine 的官方 ODBC 连接器，使得用各种编程语言如 C/C++、C#、Go、Rust、Python、Node.js 等编写的应用程序能够与 TDengine 数据库进行交互。通过利用标准化的 ODBC 接口，`taos-connector-odbc` 促进了在不同平台和环境间无缝地进行数据写入、查询和参数绑定。\n\n`taos-connector-odbc` 支持多个操作系统，包括 Windows、Linux 和 macOS。\n\n## 2. 文档\n- 使用 TDengine ODBC 连接器，请查阅[参考手册](https://docs.tdengine.com/tdengine-reference/client-libraries/odbc/)，其中包含版本历史、数据类型、示例程序、API 描述和常见问题解答。\n- 本快速指南主要面向那些喜欢自己贡献、构建和测试 ODBC 连接器的开发者。要了解更多关于 TDengine 的信息，您可以访问[官方文档](https://docs.taosdata.com/)。\n- TDengine ODBC 连接器遵循 ODBC 标准，确保在各种数据库系统之间的兼容性和互操作性。有关 ODBC 标准和规范的更详细信息，请参阅[Microsoft Open Database Connectivity (ODBC)](https://learn.microsoft.com/en-us/sql/odbc/microsoft-open-database-connectivity-odbc)文档。此资源提供了对 ODBC 接口、方法及其他相关内容的全面见解，有助于加深您对 TDengine ODBC 连接器如何在更广泛的 ODBC 应用程序中运作的理解。\n\n## 3. 前置条件\n首先，确保 TDengine 已本地部署。有关详细的部署步骤，请参阅[部署TDengine](https://docs.tdengine.com/get-started/deploy-from-package/)。确保 taosd 和 taosAdapter 服务均已启动并运行。\n\n之后，在安装和使用 `taos-connector-odbc` 之前，请确保您已满足特定平台的以下前置条件。\n\n- cmake，3.0 或以上版本，请参阅 [cmake](https://cmake.org/)。\n- flex，2.6.4 或以上版本。注意：在 Windows 平台上需要安装 win_flex_bison。\n- bison，3.5.1 或以上版本。注意：在 Windows 平台上需要安装 win_flex_bison。\n- odbc 驱动管理器，例如 Linux 中的 unixodbc（2.3.6 或以上版本）。注意：ODBC 驱动管理器在 Windows 平台上预装。\n- iconv，通常已包含在 libc 中。注意：构建此项目时会自动下载 win_iconv。\n\n如果您希望启用 valgrind 内存检查（在 cmake 配置期间启用 `ENABLE_VALGRIND_TEST` 选项），或者其他编程语言的测试用例，请参考以下内容。\n\n| 工具或语言         | 版本要求                                   | 相关库和版本                                                                                             | 参考链接                                                                       |\n|-------------------|-------------------------------------------|---------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|\n| valgrind          | v3.20 或以上                              |                                                                                                          | [valgrind](https://valgrind.org/)                                             |\n| node.js           | v12.0 或以上                              | node-odbc ，2.4.4 或以上                                                                                  | [node-odbc](https://www.npmjs.com/package/odbc/)                              |\n| rust              | v1.63 或以上                              | odbc，0.17.0 或以上\u003cbr\u003eenv_logger，0.8.2 或以上\u003cbr\u003ejson                                                    | [rust-odbc](https://docs.rs/odbc/latest/odbc/)\u003cbr\u003e[env_logger](https://docs.rs/env_logger/latest/env_logger/)\u003cbr\u003e[json](https://docs.rs/json/latest/json/) |\n| python            | v3.10 或以上                              | pyodbc ，4.0.39 或以上                                                                                    | [python-odbc](https://pypi.org/project/pyodbc/)                               |\n| go                | v1.17 或以上                              | odbc                                                                                                     | [go-odbc](https://github.com/alexbrainman/odbc)                               |\n| erlang            | v12.2 或以上                              | odbc                                                                                                     | [erlang-odbc](https://www.erlang.org/doc/apps/odbc/getting_started.html)      |\n| haskell           | cabal v3.6 或以上，ghc v9.2 或以上         | hsql-odbc                                                                                                | [haskell-odbc](https://hackage.haskell.org/package/hsql-odbc)                 |\n| common lisp       | sbcl v2.1.11 或以上                       | plain-odbc                                                                                               | [common-lisp-odbc](https://plain-odbc.common-lisp.dev/)                       |\n| R                 | v4.3 或以上                               | odbc, DBI, assert                                                                                        | [R-odbc](https://cran.r-project.org/web/packages/odbc/index.html)             |\n\n在本指南的以下部分中，我们将使用以下版本作为示例：Windows 11（用于 Windows 平台），Ubuntu 20.04（用于 Linux 平台），以及 macOS Big Sur（用于 macOS 平台）。\n\n### 3.1 Windows\n- 安装 win_flex_bison ：\n  - 下载地址： [win_flex_bison](https://github.com/lexxmark/winflexbison/releases/) 。\n  - 解压文件并将目录添加到系统的 PATH 环境变量中。\n- 验证安装：\n  ```\n  win_flex --version\n  ```\n- 安装 ODBC Driver Manager：\n确保系统上已安装 Microsoft ODBC Driver Manager 。它通常在 Windows 平台上预装。\n\n### 3.2 Linux\n- 安装所需的依赖项，包括 ODBC 驱动管理器：\n  ```\n  sudo apt install flex bison unixodbc unixodbc-dev odbcinst \u0026\u0026 echo -=Done=-\n  ```\n\n### 3.3 macOS\n- 安装所需的依赖项，包括 ODBC 驱动管理器：\n  ```\n  brew install flex bison unixodbc \u0026\u0026 echo -=Done=-\n  ```\n\n## 4. 构建和安装\n本节提供了在不同平台上构建和安装 ODBC 连接器的详细说明。\n在继续之前，请确保您位于该项目的根目录中。\n\n### 4.1 Windows\n- 可选地，设置构建环境：如果您在 64 位 Windows 平台上安装了 Visual Studio Community 2022 ，请运行以下命令来设置构建环境：\n  ```\n  \"\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat\" x64\n  ```\n- 生成 make 文件：\n  ```\n  cmake --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -B build -G \"Visual Studio 17 2022\" -A x64\n  ```\n  **故障排除**：如果在以下步骤中发生编译器错误，例如 \u003cpath_to_winbase.h\u003e 警告 C5105：宏扩展产生 'defined' 具有未定义行为，请使用以下命令重试：\n  ```\n  cmake --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -B build -G \"Visual Studio 17 2022\" -A x64 -DDISABLE_C5105:BOOL=ON\n  ```\n- 构建项目：\n  ```\n  cmake --build build --config Debug -j 4\n  ```\n- 安装连接器：\n  这将默认把 taos_odbc.dll 安装到 `C:\\TDengine\\taos_odbc\\x64\\`。\n  ```\n  cmake --install build --config Debug\n  cmake --build build --config Debug --target install_templates\n  ```\n- 验证安装:\n  检查 Windows 注册表中是否已设置新的 TAOS_ODBC_DSN 注册表项：\n  ```\n  HKEY_LOCAL_MACHINE\\SOFTWARE\\ODBC\\ODBCINST.INI\\TDengine\n  HKEY_CURRENT_USER\\Software\\ODBC\\Odbc.ini\\TAOS_ODBC_DSN\n  ```\n### 4.2 Linux/macOS\n- 生成 make 文件：\n  ```\n  cmake -B debug -DCMAKE_BUILD_TYPE=Debug\n  ```\n- 构建项目：\n  ```\n  cmake --build debug\n  ```\n- 安装连接器：\n  ```\n  sudo cmake --install debug\n  cmake --build debug --target install_templates\n  ```\n- 验证安装:\n  检查 ODBC DSN 配置文件（例如， `/etc/odbc.ini` 或 `~/.odbc.ini` ）是否包含 TAOS_ODBC_DSN 条目。\n\n## 5. 测试\n### 5.1 运行测试\nODBC 连接器测试框架使用 ctest 来运行测试用例。测试用例位于项目根目录的 tests 目录中。\n\n#### 5.1.1 Windows\n- 设置测试环境变量：\n  设置以下环境变量以配置日志级别和目标：\n  ```\n  set TAOS_ODBC_LOG_LEVEL=ERROR\n  set TAOS_ODBC_LOGGER=stderr\n  ```\n  可用的日志级别有：VERBOSE、DEBUG、INFO、WARN、ERROR、FATAL。较低的级别提供更详细的日志。\n  可用的日志记录器有：\n  - stderr：记录到标准错误。\n  - temp：记录到临时目录中的文件（`taos_odbc.log`）。\n\n- 运行测试:\n  ```\n  ctest --test-dir build --output-on-failure -C Debug\n  ```\n\n#### 5.1.2 Linux/macOS\n- 设置测试环境变量：\n  设置以下环境变量来配置日志级别和目标：\n  ```\n  export TAOS_ODBC_LOG_LEVEL=ERROR\n  export TAOS_ODBC_LOGGER=stderr\n  ```\n  可用的日志级别有：VERBOSE、DEBUG、INFO、WARN、ERROR、FATAL。较低级别提供更详细的日志。\n\n  可用的日志记录器有：\n  - stderr：记录到标准错误。\n  - temp：记录到临时目录中的文件（`taos_odbc.log`）。\n  - syslog：记录到系统日志（仅在 Linux 平台上可用；在 macOS 上不支持）。\n\n- 运行测试:\n  ```\n  pushd debug \u003e/dev/null \u0026\u0026 ctest --output-on-failure \u0026\u0026 echo -=Done=-; popd \u003e/dev/null\n  ```\n\n### 5.2 添加用例\n所有测试位于项目 `./tests/` 目录中。此目录包含各种语言和类型测试的子目录。基本功能验证测试用例是用 C 语言编写的，位于 `c` 和 `taos` 文件夹中。\n您可以添加新的测试文件或在现有的测试文件中添加符合测试框架标准的测试用例。\n对于 C/C++ 测试，确保它们遵循 CTest 框架规范。\n将新的测试文件放置在 tests 目录中的适当子目录内。\n\n\n### 5.3 性能测试\n性能测试还在开发中。\n\n## 6. CI/CD\n- [Build Workflow] -TODO\n- [Code Coverage] -TODO\n\n## 7. 提交 Issue\n我们欢迎提交 [GitHub Issue](https://github.com/taosdata/taos-connector-odbc/issues/new?template=Blank+issue) 。提交时，请提供以下信息以帮助我们更高效地诊断和解决问题：\n\n\n### 7.1 必要信息\n- 问题描述：\n  提供您遇到的问题的清晰和详细描述。\n  指出问题是持续发生还是间歇性发生。\n  如果可能，请包括详细的调用栈或错误消息，以帮助诊断问题。\n\n- ODBC 连接器版本：\n  指定您使用的 ODBC 连接器的版本。\n\n- ODBC 连接参数：\n  提供您的 ODBC 连接字符串或 DSN（数据源名称）配置详情。请勿包含敏感信息，如用户名和密码。\n  示例：\n  ```\n  DSN=TAOS_ODBC_DSN;UID=\u003cyour_username\u003e;PWD=\u003cyour_password\u003e\n  ```\n  出于安全原因，请将 \u003cyour_username\u003e 和 \u003cyour_password\u003e 替换为占位符或省略它们。\n- TDengine 服务器版本：\n  指定您连接到的 TDengine 服务器的版本。\n\n### 7.2 额外信息\n- 操作系统：指定操作系统及其版本。\n- 重现步骤：提供说明如何重现问题。这有助于我们复现和验证问题。\n- 环境配置：包括任何相关的环境配置，例如 odbc.ini 、 odbcinst.ini 或其他配置文件中的特定设置。\n- 日志：附加任何可能有助于诊断问题的相关日志。日志可以在您的日志配置指定的位置找到（例如 stderr 、 temp 或 syslog）。\n\n## 8. 提交 PR\n我们欢迎开发者一起开发本项目，提交 PR 时请参考下面步骤：\n1. Fork 本项目，请参考 ([how to fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo))。\n2. 从 main 分支创建一个新分支，请使用有意义的分支名称 (`git checkout -b my_branch`)。注意不要直接在 main 分支上修改。\n3. 修改代码，保证所有单元测试通过，并增加新的单元测试验证修改。\n4. 提交修改到远端分支 (`git push origin my_branch`)。\n5. 在 GitHub 上创建一个 Pull Request ([how to create a pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request))。\n6. 提交 PR 后，可以通过 [Pull Request](https://github.com/taosdata/taos-connector-odbc/pulls) 找到自己的 PR，点击对应链接进去可以看到自己 PR CI 是否通过，如果通过会显示 “All checks have passed”。无论 CI 是否通过，都可以点击 “Show all checks” -\u003e “Details” 来查看详细用例日志。\n7. 提交 PR 后，如果 CI 通过，可以在 [codecov](https://app.codecov.io/gh/taosdata/taos-connector-odbc/pulls) 页面找到自己 PR，看单测覆盖率。\n\n## 9. 引用\n- [TDengine Official Website](https://www.tdengine.com/) \n- [TDengine GitHub](https://github.com/taosdata/TDengine) \n- [Microsoft Introduction to ODBC](https://learn.microsoft.com/en-us/sql/odbc/reference/introduction-to-odbc)\n- [Microsoft ODBC API Reference](https://learn.microsoft.com/en-us/sql/odbc/reference/syntax/odbc-api-reference)\n\n## 10. 附录\n项目源代码布局，仅目录：\n```\n\u003croot\u003e\n├── benchmark\n├── cmake\n├── common\n├── inc\n├── samples\n│   └── c\n├── sh\n├── src\n│   ├── core\n│   ├── inc\n│   ├── os_port\n│   ├── parser\n│   ├── tests\n│   └── utils\n├── templates\n├── tests\n│   ├── c\n│   ├── cpp\n│   ├── cs\n│   ├── erl\n│   ├── go\n│   ├── hs\n│   │   └── app\n│   ├── lisp\n│   ├── node\n│   ├── python\n│   ├── R\n│   ├── rust\n│   │   └── main\n│   │       └── src\n│   ├── sh\n│   └── taos\n└── valgrind\n```\n\n## 11. 许可证\n[MIT License](./LICENSE)\n\n\u003c!-- omit in toc --\u003e\n## 由 freemine@yeah.net 初创\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaosdata%2Ftaos-connector-odbc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaosdata%2Ftaos-connector-odbc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaosdata%2Ftaos-connector-odbc/lists"}