文档没有启发性:
我问的原因是用户对为什么他们可以在一个表中看到某些表而在另一个表中看不到感到困惑。它与权限有关,但不清楚具体如何。
例如,一个用户告诉我他们有权查询一个表。但是,该表未显示在 中TABLES
,其列也未显示在 中COLUMNS
,但该表确实显示在 中ALL_TABLES
。
因此,这导致了以下问题:
ALL_TABLES
和 和有什么不一样TABLES
?- 用户如何查看他们有权查询的所有表(和列!)的列表?
我有 DB Vertica 8.0。使用 LONG VARCHAR 类型的表包含字段创建模式 WAREHOUSE。现在我尝试执行 SELECT 例如
SELECT * FROM WAREHOUSE.ALL_EVENTS a
WHERE
a.original_data like '%d963%'
返回错误
SQL Error [4286] [42883]: [Vertica][VJDBC](4286) ERROR: Operator does not exist: long varchar ~~ unknown
[Vertica][VJDBC](4286) ERROR: Operator does not exist: long varchar ~~ unknown
com.vertica.util.ServerException: [Vertica][VJDBC](4286) ERROR: Operator does not exist: long varchar ~~ unknown
在 Oracle 中,我将 dbms_lob 包用于 CLOB 字段。
Vertica 有用于 LONG VARCHAR 类型的类似包吗?
LONG VARCHAR 如何“喜欢”?
我知道MongoDB是主从架构,Cassandra是点对点架构。
我没有找到有关 Vertica 架构的任何资源。
那是主从还是点对点?
Vertica集群是否支持多读多写?
我正在将一些数据加载到这样的表中:
COPY table1 (
col1,
col2,
file_name AS CURRENT_LOAD_SOURCE()
)
FROM LOCAL :src_file
REJECTED DATA :rejected_file
EXCEPTIONS :exceptions_file
SKIP 1;
它有效,除了用字符串而不是实际的基本名称file_name
填充。Batch No. 1
:src_file
的文档CURRENT_LOAD_SOURCE()
没有解释为什么会这样。
这是一个错误吗?如何获取源文件的实际名称?
我对 Vertica 数据库运行以下语句,一次一个:
BEGIN TRANSACTION;
UPDATE table
SET col1 = 'something'
WHERE col2 = 'something else';
SELECT COUNT(*)
FROM table
WHERE col1 = 'something';
ROLLBACK TRANSACTION;
我运行第一行很好......好吧,现在我正在进行交易。
我运行我的更新......好吧,这工作。
我运行SELECT
测试以确保事情按预期工作......哦,等等,看起来我错过了语句WHERE
子句中的一个条件UPDATE
。
不用担心!这就是我在交易中这样做的原因。
让我们回滚:
=> ROLLBACK TRANSACTION;
[Vertica][JDBC](10040) Cannot use commit while Connection is in auto-commit mode.
琼斯,把你桌上的那卷卫生纸交出来。
所以 Vertica 很高兴地接受了我的BEGIN TRANSACTION
,因为我非常清楚,在那之后我会尝试运行 aROLLBACK
或COMMIT
.
然而,我做不到!我的连接处于自动提交模式,因此ROLLBACK
毫无COMMIT
意义。我UPDATE
的承诺在它完成的那一刻。
我错过了什么,还是我认为这只是 Vertica 的一个非常糟糕的实现?
如果逻辑结果 (或) 是非法的,为什么 Vertica 会BEGIN TRANSACTION
在自动提交模式下接受连接?ROLLBACK
COMMIT
我有一个包含两列的表,假设是 FirstName 和 LastName。我需要得到另一个表,对于第一个中的每一对 FirstName,它都包含一个共同的 LastName 的计数。
这在 SQL 中是否可行?
如果这会影响查询效率,那么姓氏的唯一性要比名字多得多。
一个玩具示例,输入:
FirstName, LastName
John, Smith
John, Doe
Jane, Doe
输出:
FirstName1, FirstName2, CommonLastNames
John, John, 2
John, Jane, 1
Jane, Jane, 1
Jane, John, 1
由于此关系是自反和对称的,因此如果结果只是其中一个三角形(例如,对角线上方的那个)就可以了。
我正在尝试使用系统表在表级别(包括权限)获取有关整个 Vertica 集群的一些元数据。
在哪里可以找到有关 SELECT 表所需权限的信息?
我在GRANTS
和ROLES
系统表中四处寻找,但找不到任何角色->表映射。
我考虑过使用HAS_TABLE_PRIVILEGE()
,但那是在用户级别上使用的。我宁愿在角色层面上做。
我有一个 Vertica 数据库。我怎么知道数据库有多大?
为了向高层管理人员报告有关我们环境的基本统计数据,我需要一个粗略的答案。
我正在尝试创建一个从 SQL Server 到 Vertica 的链接服务器以提取一些数据。我尝试使用此处找到的以下 ODBC 。
我目前正在尝试的代码是:
EXEC dbo.sp_addlinkedserver
@server = N'VERTICA',
@srvproduct=N'',
-- SQL Server driver
@provider=N'MSDASQL',
-- Connection string
@provstr=N'Driver=Vertica ODBC Driver 4.1;
Servername=Vertica;
Port=5433;
Database=Vertica;
UserName=user;
Password=pass'
我得到的错误信息是:
链接服务器“VERTICA”的 OLE DB 提供程序“MSDASQL”返回消息“[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified”。