我试图在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'。
发布于 2015-02-07 19:13:03
默认情况下,AUTOCOMMIT为off:
$ vsql -c "\set"
VERSION = 'vsql'
AUTOCOMMIT = 'off'
...或者提交您的更改或定义AUTOCOMMT=ON。在我看来,第二种选择更好:
$ vsql -v AUTOCOMMIT=on -c "\set"
VERSION = 'vsql'
AUTOCOMMIT = 'on'
...或者将commit放在INSERT语句之后:
$ vsql -c "INSER INTO whatever VALUES (...); commit;"发布于 2015-02-07 19:48:05
找到它后,我需要在一批COMMIT命令之后添加INSERT。见https://my.vertica.com/docs/7.1.x/HTML/index.htm#Authoring/ConnectingToHPVertica/vsql/AUTOCOMMIT.htm。
只有在需要时才使用一个COMMIT似乎比在每次插入后触发提交的AUTOCOMMIT要好。
https://stackoverflow.com/questions/28385386
复制相似问题