Phoenix SQL使用注意事项

2019-06-25  本文已影响0人  EAST4021

1 背景

Phoenix SQL的一些语法与mysql等数据库的语法有所不同,以下是我在使用过程中遇到的一些问题。

2 问题

  1. 库名、表名、字段名都需要加双引号,否则会被自动转换为大写,造成不可预知的错误。
  2. 插入使用upsert命令,而不是insert
UPSERT INTO TEST VALUES('foo','bar',3);
UPSERT INTO TEST(NAME,ID) VALUES('foo',123);
UPSERT INTO TEST(ID, COUNTER) VALUES(123, 0) ON DUPLICATE KEY UPDATE COUNTER = COUNTER + 1;
UPSERT INTO TEST(ID, MY_COL) VALUES(123, 0) ON DUPLICATE KEY IGNORE;
  1. 没有update命令,可以采用覆盖更新。
    主键相同的数据,新插入的数据会自动覆盖原来的数据
UPSERT INTO test.targetTable(col1, col2) SELECT col3, col4 FROM test.sourceTable WHERE col5 < 100
UPSERT INTO foo SELECT * FROM bar;
  1. 字符串转数字函数TO_NUMBER
  2. 字符串拆分函数regexp_split("col",'\.')

参考资料

  1. 官方文档-快速入门:https://phoenix.apache.org/Phoenix-in-15-minutes-or-less.html
  2. 官方文档-语法:https://phoenix.apache.org/language/index.html
  3. 官方文档-函数:https://phoenix.apache.org/language/functions.html
  4. 官方文档-数据类型:https://phoenix.apache.org/language/datatypes.html
上一篇 下一篇

猜你喜欢

热点阅读