将 Node odbc 与 Microsoft Access 结合使用
Using Node odbc with Microsoft Access
我正在尝试编写一个容器化的 Node 应用程序,它接收 Microsoft Access 数据库并访问其中的数据。我想将应用程序放在 docker 容器中,并希望使用 npm odbc 与 Access 进行交互。我没有太多创建容器的经验,所以大部分都是学习过程。
我正在努力为 Access 安装和配置 odbc。根据我链接的文档,odbc 有三个要求。
- 安装 unixODBC 和 unixODBC-devel
- 为目标数据库安装 ODBC 驱动程序
- 定义 odbc.ini 和 odbcinst.ini
我正在努力使任何数量的 odbc 功能正常工作,所以我认为问题是我没有正确配置环境。这是我定义容器环境的基本 Dockerfile。 运行 AccessDatabaseEngine.exe 文件 returns 一个未找到错误,即使我很确定文件 应该 存在于那里。现在,我已经注释掉了这一行。应用程序代码 运行 来自不同的 Dockerfile 集,构建于此。
# Use Ubuntu OS as base image
FROM ubuntu:latest
# Set env vars
ENV NPM_CONFIG_LOGLEVEL info
# odbc requirement #1
# Install unixODBC, unixODBC-devel, and curl
RUN apt-get update
RUN apt-get -y install unixodbc
RUN apt-get -y install unixodbc-dev
RUN apt-get -y install curl
# Download & install Node.js
RUN curl -fsSL https://deb.nodesource.com/setup_12.x | bash
RUN apt-get -y install nodejs
# odbc requirement #2
# Install ODBC drivers for Access database
RUN curl -LJO https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine.exe
RUN cp AccessDatabaseEngine.exe /bin/
RUN chmod +x /bin/AccessDatabaseEngine.exe
# RUN ['/bin/AccessDatabaseEngine.exe'] # Error: #14 0.249 /bin/sh: 1 [/bin/AccessDatabaseEngine.exe]: not found
# Run node
CMD [ "node" ]
在我的应用程序中,我尝试像这样使用 odbc。找到 odbc 要求 #3 的连接字符串 here:
// Test function to test out npm odbc
exports.export = async (file) => {
// odbc requirement #3
// Make Access connection
const conn = await odbc.connect(`Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=${file.path}`);
// Execute test query
const res = await conn.query('SELECT 1');
console.log(JSON.stringify(res));
}
我对 odbc 需求#1 和#3 的实现感觉很好,但我在#2(为目标数据库安装 ODBC 驱动程序)上遇到困难。我不仅在努力 运行 AccessDatabaseEngine.exe,而且我也不能 100% 确定它是否是要尝试安装的正确文件。我 运行 进入 this 和 that 似乎它可能是我需要的 odbc 驱动程序。但是,我尝试 docker 将他们提供的代码和 运行 转化为更多问题。
同样,我想创建一个容器化的 Node 应用程序,它使用 ODBC npm 库来访问 Microsoft Access 数据库中的数据。有人有这方面的经验吗?任何帮助,将不胜感激。提前致谢。
正如评论中所说。我在这里抓住了错误的稻草。我无法将访问驱动程序下载到我的 Linux 机器上。根据驱动程序系统要求 here,我必须使用 Windows OS。
我正在尝试编写一个容器化的 Node 应用程序,它接收 Microsoft Access 数据库并访问其中的数据。我想将应用程序放在 docker 容器中,并希望使用 npm odbc 与 Access 进行交互。我没有太多创建容器的经验,所以大部分都是学习过程。
我正在努力为 Access 安装和配置 odbc。根据我链接的文档,odbc 有三个要求。
- 安装 unixODBC 和 unixODBC-devel
- 为目标数据库安装 ODBC 驱动程序
- 定义 odbc.ini 和 odbcinst.ini
我正在努力使任何数量的 odbc 功能正常工作,所以我认为问题是我没有正确配置环境。这是我定义容器环境的基本 Dockerfile。 运行 AccessDatabaseEngine.exe 文件 returns 一个未找到错误,即使我很确定文件 应该 存在于那里。现在,我已经注释掉了这一行。应用程序代码 运行 来自不同的 Dockerfile 集,构建于此。
# Use Ubuntu OS as base image
FROM ubuntu:latest
# Set env vars
ENV NPM_CONFIG_LOGLEVEL info
# odbc requirement #1
# Install unixODBC, unixODBC-devel, and curl
RUN apt-get update
RUN apt-get -y install unixodbc
RUN apt-get -y install unixodbc-dev
RUN apt-get -y install curl
# Download & install Node.js
RUN curl -fsSL https://deb.nodesource.com/setup_12.x | bash
RUN apt-get -y install nodejs
# odbc requirement #2
# Install ODBC drivers for Access database
RUN curl -LJO https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine.exe
RUN cp AccessDatabaseEngine.exe /bin/
RUN chmod +x /bin/AccessDatabaseEngine.exe
# RUN ['/bin/AccessDatabaseEngine.exe'] # Error: #14 0.249 /bin/sh: 1 [/bin/AccessDatabaseEngine.exe]: not found
# Run node
CMD [ "node" ]
在我的应用程序中,我尝试像这样使用 odbc。找到 odbc 要求 #3 的连接字符串 here:
// Test function to test out npm odbc
exports.export = async (file) => {
// odbc requirement #3
// Make Access connection
const conn = await odbc.connect(`Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=${file.path}`);
// Execute test query
const res = await conn.query('SELECT 1');
console.log(JSON.stringify(res));
}
我对 odbc 需求#1 和#3 的实现感觉很好,但我在#2(为目标数据库安装 ODBC 驱动程序)上遇到困难。我不仅在努力 运行 AccessDatabaseEngine.exe,而且我也不能 100% 确定它是否是要尝试安装的正确文件。我 运行 进入 this 和 that 似乎它可能是我需要的 odbc 驱动程序。但是,我尝试 docker 将他们提供的代码和 运行 转化为更多问题。
同样,我想创建一个容器化的 Node 应用程序,它使用 ODBC npm 库来访问 Microsoft Access 数据库中的数据。有人有这方面的经验吗?任何帮助,将不胜感激。提前致谢。
正如评论中所说。我在这里抓住了错误的稻草。我无法将访问驱动程序下载到我的 Linux 机器上。根据驱动程序系统要求 here,我必须使用 Windows OS。