VoltDB对SQL支持的不是很完善,当然作为一个内存数据库也不需要太复杂的SQL
1.不支持自增,ignite也不支持,因为数据大部分是来自另一个数据库,应该把另一个库中的主键值带过来,所以就不自己生成了
2.不支持批量insert如
insert into crm_user(icd,code)values(1,'a'),(2,'b')这样不支持
如果需要批量插入可以命令行调用jdbcloader,csvloader或者利用jdbc的批量插入
通过情况下是用jdbcloader导入初始数据,用jdbc追加增量数量
3.插入数据时,不存在则插入,存在只能更新不能忽略,语法与INSERT一样 换成UPSERT
JDBC操作VoltDB示例

jdbcloader 命令使用 JDBC 接口从远程数据库中的指定表中获取所有记录,并且 然后将这些记录插入到 VoltDB 中的匹配表中。
使用 jdbcloader 的最常见方法是复制匹配的表 从另一个数据库到 VoltDB。可以指定表的名称,以及任何特定于 JDBC 的参数 需要。通常,必需的参数是 JDBC 连接 URL、源表、用户名、密码和本地 JDBC 驱动程序。例如:
注意这里用到的驱动必须要在CLASSPATH中或者在voltdb安装目录中的/lib/extension下,根据上一步设置的docker目录,驱动文件应该在容器的/dp/voltdb/lib/extension目录,也就是宿主机的/dp/docker/file/voltdb/dp/voltdb/lib/extension
因这这里用到了pg所以复制postgresql-42.3.7.jar到
/dp/docker/file/voltdb/dp/voltdb/lib/extension
$ jdbcloader employees \      --jdbcurl=jdbc:postgresql://remotesvr/corphr \      --jdbctable=employees \      --jdbcuser=charlesdickens \      --jdbcpassword=bleakhouse \      --jdbcdriver=org.postgresql.Driver 除了将所有有效内容插入到指定的数据库表中之外,jdbcloader 还会创建三个输出 文件: 错误日志 — 错误日志提供有关发生的任何错误的详细信息 在处理输入文件时。这包括尝试插入 VoltDB 时发生的错误。例如,如果两个 对于声明为唯一的列,行包含相同的值,错误日志指示第二次插入 由于违反约束而失败。 失败的输入 — 一个单独的文件包含每条记录的内容 加载失败。记录以 CSV(逗号分隔值)格式存储。此文件很有用,因为它允许您 以更正任何格式问题,并使用 csvloader 重试失败的内容。 摘要报告 — 处理完所有输入记录后,jdbcloader 将生成 摘要报告,列出读取了多少条记录、成功加载了多少条记录以及操作时长 拿走了。 默认情况下,所有三个文件都是在当前工作目录中使用“jdbcloader”创建的,表名为 前缀。例如,使用 jdbcloader 将参赛者插入到示例选民数据库中会创建以下内容 文件: jdbcloader_contestants_insert_log.log jdbcloader_contestants_insert_invalidrows.csv jdbcloader_contestants_insert_report.log 可以使用 jdbcloader 执行其他输入操作。例如,如果源表没有 与目标表的结构相同,可以使用自定义存储过程执行从 1 到 另一种方法是在命令行上使用 --procedure 标志指定过程名称: p $ jdbcloader --procedure translateEmpRecords \     --jdbcurl=jdbc:postgresql://remotesvr/corphr \      --jdbctable=employees \      --jdbcuser=charlesdickens \      --jdbcpassword=bleakhouse \      --jdbcdriver=org.postgresql.Driver 参数 --batch {整数} 指定要批量提交到目标 VoltDB 数据库的行数。如果未指定插入 过程中,输入行将分批发送,以最大限度地提高整体吞吐量。您可以指定发送的行数 每个批次都使用标志。默认批大小为 200。如果使用该标志,则不会发生批处理,并且每一行都是单独发送的。--batch--procedure --credentials={属性文件} 指定一个文件,该文件列出连接到数据库时要使用的帐户的用户名和密码 已启用安全性。这在编写 shell 脚本时很有用,因为它避免了将密码硬编码为普通密码 脚本中的文本。凭证文件被解释为定义属性和 的 Java 属性文件。例如:usernamepassword username: johndoe password: 4tUn8 因为它是一个 Java 属性文件,所以必须对用户名或密码中的某些特殊字符进行转义, 包括冒号或等号。 --fetchsize {整数} 指定在对源数据库的每个 JDBC 调用中要提取的记录数。默认提取大小为 100 记录 --jdbcdriver {类名} 指定要调用的 JDBC 驱动程序的类名。驱动程序必须存在于本地,并且可以访问 从 CLASSPATH 环境变量或 VoltDB 所在的目录中 安装。lib/extension --jdbcpassword {文本} 指定通过 JDBC 连接到源数据库时要使用的密码。您必须指定用户名和 密码(如果在源数据库上启用了安全性)。 --jdbctable {表名} 指定远程数据库上的源表的名称。默认情况下,jdbcloader 假定源表具有 与目标 VoltDB 表同名。 --jdbcurl {连接网址} 指定源数据库的 JDBC 连接 URL。此参数是必需的。 --jdbcuser {文本} 指定通过 JDBC 连接到源数据库时要使用的用户名。您必须指定用户名和 密码(如果在源数据库上启用了安全性)。 --limitrows {整数} 指定要从输入流中读取的最大行数。此参数允许您加载 远程数据库表。 -m, --maxerrors {整数} 指定 jdbcloader 停止处理输入之前的目标错误数。一旦 jdbcloader 遇到 在尝试插入行时出现指定数量的错误,它将停止读取输入并结束该过程。请注意, 由于 JDBCProderder 异步执行插入,因此它通常会在目标数量 从数据库返回异常。因此,在达到目标后,可能会返回更多错误。 此参数允许您在错误数超过可接受数时有条件地停止大型加载过程 发生。 --密码 {文本} 指定连接到数据库时要使用的密码。如果出现以下情况,则必须指定用户名和密码 为数据库启用了安全性。如果使用 --user 参数指定用户名,但未指定 --password 参数,VoltDB 会提示输入密码。这在编写 shell 脚本时很有用,因为它避免了必须 在脚本中将密码硬编码为纯文本。 --port {端口号} 指定连接到 VoltDB 数据库时要使用的网络端口。如果未指定端口, JDBCPerader 使用默认的客户端端口 21212。 -p, --procedure {procedure-name} 指定用于从输入源加载每条记录的存储过程。命名过程必须 存在于 VoltDB 数据库架构中,并且必须接受数据记录的字段作为输入参数。默认情况下, JDBCPerader 使用自定义过程将多行批处理到单个插入操作中。如果显式命名 过程中,不会发生批处理。 -r, --reportdir {目录} 指定 jdbcloader 写入三个输出文件的目录。默认情况下,jdbcloader 写入输出 文件复制到当前工作目录。此参数允许您将输出重定向到备用位置。 --s, --servers {服务器 ID}[,...] 指定 VoltDB 集群的一个或多个节点的网络地址。指定 IPv6 地址时,请将 方括号中的地址。默认情况下,jdbcloader 会尝试将数据插入到本地的 VoltDB 数据库中 系统 (localhost)。要将数据加载到远程数据库,请使用 --servers 参数指定 VoltDB 数据库 加载程序应连接到的节点。 --ssl[=ssl-config-file] 指定在与服务器通信时使用 TLS 加密。仅当群集 配置为对外部端口使用 TLS 加密。有关详细信息,请参阅名为“将 CLI 命令与 TLS/SSL 结合使用”的部分。 --stopondisconnect 指定如果与所有 VoltDB 服务器的连接断开,加载程序将停止。通常,如果 与数据库的连接丢失,JDBCRoder会定期尝试重新连接,直到服务器重新联机 它可以完成加载过程。但是,您可以使用此参数让加载程序进程停止,如果 VoltDB 集群变得不可用。 --user {文本} 指定连接到 VoltDB 数据库时要使用的用户名。您必须指定用户名和密码 如果在目标数据库上启用了安全性。 例 以下示例从服务器 hq.mycompany.com 和 使用 MySQL JDBC 将记录写入服务器 svrA、svrB 和 svrC 上 VoltDB 数据库的 Products 表中 驱动程序来访问源数据库。请注意,不需要 --jdbctable 标志,因为源表和目标表具有 同名。 $ jdbcloader Products --servers="svrA,svrB,svrC" \     --jdbcurl="jdbc:mysql://hq.mycompany.com/warehouse" \     --jdbcdriver="com.mysql.jdbc.Driver" \     --jdbcuser="ceo" \     --jdbcpassword="headhoncho"