我正在研究面向列的数据库并遇到了 Vertica。
我需要从 C 代码提供 Vertica 数据库。我没有成功从 Vertica 获取此信息:我被告知使用“vsql”和“copy”命令。我想要的只是INSERT
向我的 Vertica 数据库发出语句。
这可以做到吗?
例如,在 PostgreSQL 中,您可以通过将 Postgresecpg
库链接到您的 C 二进制文件来执行“嵌入式 SQL”。我不知道 Vertica 是否存在这种情况,我也不知道其他方法。
有任何想法吗?
我正在研究面向列的数据库并遇到了 Vertica。
我需要从 C 代码提供 Vertica 数据库。我没有成功从 Vertica 获取此信息:我被告知使用“vsql”和“copy”命令。我想要的只是INSERT
向我的 Vertica 数据库发出语句。
这可以做到吗?
例如,在 PostgreSQL 中,您可以通过将 Postgresecpg
库链接到您的 C 二进制文件来执行“嵌入式 SQL”。我不知道 Vertica 是否存在这种情况,我也不知道其他方法。
有任何想法吗?
你真的有两个选择:你可以用你的数据创建一个分隔文件,如下所示:
然后,您可以使用 COPY 命令和 vsql 将其加载到 Vertica 中。如果你有数据库超级用户权限,你可以直接加载文件,使用:
如果要输入密码,请省略 -w 将密码保留在 bash 历史记录中,并在程序启动时输入。如果您没有数据库超级用户权限,您仍然可以将文件放入 vsql 并从 STDIN 获取数据 - 这就是为什么 Vertica 会阻止您从没有超级用户权限的文件中加载数据,但会让任何用户通过 cat 管道将其导入,我不知道,但你可以这样做:
或者,如果您在一个文件中有一堆单独的插入语句,用分号分隔,您可以通过 vsql 运行该文件,如下所示:
但是,如果您执行的行数超过 1000 行,则使用分隔文件的批量加载应该会快得多。
希望有帮助!
Vertica 包括 C 的 ODBC 驱动程序。
阅读“程序员 > 指南 Vertica 客户端库 > 编写 ODBC 客户端应用程序”