Vertica插入被忽略

时间:2015-02-07 17:48:34

标签: python vertica

我试图在一个Vertica表中做一个非常简单的INSERT,它不起作用:我的数据被默默忽略。

$ LC_ALL=C /opt/vertica/bin/vsql db user -w *** -c "SELECT * FROM footable"
         lastFetch         | ApiPath | response 
---------------------------+---------+----------
 2015-02-07 18:41:42.26069 | a1      | b1
(1 row)

$ LC_ALL=C /opt/vertica/bin/vsql db user -w *** -c "INSERT INTO footable (lastFetch, ApiPath, response) VALUES ('2015-02-07 18:19:32.435001', 'a2', 'b2')"
 OUTPUT 
--------
      1
(1 row)

$ LC_ALL=C /opt/vertica/bin/vsql db user -w *** -c "SELECT * FROM footable"
         lastFetch         | ApiPath | response 
---------------------------+---------+----------
 2015-02-07 18:41:42.26069 | a1      | b1
(1 row)

有什么可能出错的想法吗?

我尝试使用vertica-python,结果相同。 我还尝试使用NOW()代替'2015-02-07 18:19:32.435001'

2 个答案:

答案 0 :(得分:4)

默认情况下,AUTOCOMMIT处于关闭状态:

$ vsql -c "\set"
VERSION = 'vsql'
AUTOCOMMIT = 'off'
...

或提交您的更改或定义AUTOCOMMT=ON。 对于我的观点 - 第二种选择更好:

$ vsql -v AUTOCOMMIT=on -c "\set"
VERSION = 'vsql'
AUTOCOMMIT = 'on'
...

或者在INSERT语句后立即放置commit

$ vsql  -c "INSER INTO whatever VALUES (...); commit;"

答案 1 :(得分:0)

找到它,我需要在一批COMMIT命令之后添加INSERT。 请参阅https://my.vertica.com/docs/7.1.x/HTML/index.htm#Authoring/ConnectingToHPVertica/vsql/AUTOCOMMIT.htm

仅在需要时COMMIT似乎比在每次插入后触发提交的AUTOCOMMIT更好。