询问 :
select similarity( 'GTudH','tud'), similarity ('GTudH', 'gtu'), similarity ('GTudH', 'gdh')
以上是Postgres的查询结果,谁能解释一下为什么第一个相似度分数只有0.1,第三个是0.25
对 Snowflake 进行了相同的测试,这似乎没问题。
我是 SQL 的新手,并且大部分时间都在使用 ORM(好吧,SQL 构建器,而不是原始 SQL)。我在Vercel Postgres版本 15中有一个简单的字典应用程序,具有这种模式:
CREATE TABLE words (
id serial PRIMARY KEY,
transcription_count INTEGER NOT NULL,
pronunciation_count INTEGER NOT NULL,
verified BOOLEAN NOT NULL
);
CREATE TABLE transcriptions (
id serial PRIMARY KEY,
word_id INTEGER REFERENCES words,
text TEXT NOT NULL,
system INTEGER NOT NULL,
length INTEGER NOT NULL
);
CREATE TABLE pronunciations (
id serial PRIMARY KEY,
word_id INTEGER REFERENCES words,
text TEXT NOT NULL,
syllable_count INTEGER NOT NULL
);
例如,我想找到转录文本长度 >= 5 的所有单词,并对文本进行排序,但返回单词。每个转录都属于一个系统,每个系统可以有 1 个或多个转录(例如,给定“拉丁”系统,单词“color/colour”有 2 个拼写,作为一个粗略的例子)。此外,每个单词可以有多个系统(例如,中文有拼音和汉字作为 2 个可能的系统,在中文系统中有繁体和简体作为系统内的 2 个转录)。
这就是我的想法。
SELECT id from words
INNER JOIN transcriptions t ON t.word_id = words.id
WHERE t.length >= 5
AND t.system = 1
ORDER BY t.text ASC
这是正确的查询类型吗?这会返回重复的单词吗,因为我正在按连接表排序,并且存在 1<>many 关系?我不清楚这将如何工作/会返回什么样的结果。另外,作为第二个查询,我怎么能另外指定“只为每个单词选择匹配请求的第一个转录”,所以它只按每个单词的 1 个转录排序?
我正在尝试计算 postgres 数据库中 NUMERIC 列的最大长度。数据库中有许多表,其中大多数表包含许多数字列。
我正在将相当大量的 json 数据导入数据库。如果目标列精度/小数位数小于输入的,则 SQLModel 或 pydantic 无法插入数字字段。目前,我正在将数据播种到通用NUMERIC(16,5)
列中,但我想通过优化列大小来减少存储空间。(我的是一个半只读数据集,以后列的大小不会有太大差异)
作为参考,以下是我解决问题的失败......
SELECT
table_schema,
TABLE_NAME,
COLUMN_NAME,
(
xpath (
'/row/max/text()',
query_to_xml (
format (
'SELECT LENGTH ( CAST ( MAX ( %I ) AS CHARACTER VARYING ( 40 ) ) ) from %I.%I',
COLUMN_NAME,
table_schema,
TABLE_NAME
),
TRUE,
TRUE,
''
)
)
) [ 1 ] :: TEXT :: INT AS max_length
FROM
information_schema.COLUMNS
WHERE
table_schema = 'public'
AND data_type = 'numeric'
ORDER BY
table_schema,
TABLE_NAME,
COLUMN_NAME;
更好的方法是将最大列长度拆分为精度和比例。
我正在尝试回答以下问题(在之前的考试中被问到并且应该有一个正确答案):
要创建 DATAFILE 并将其分配给 DATABASE,实例不能
- 以 NOMOUNT 模式启动
- 以 MOUNT 模式启动
- 以 OPEN 模式启动
- 没有开始
为此,我开始阅读数据库 和实例启动和关闭一文中的相关 Oracle 文档。在How a Database is Mounted部分中,陈述了以下内容(强调我的):
数据库是如何挂载的
实例安装数据库以将数据库与该实例相关联。为了装载数据库,实例找到数据库控制文件并打开它们。控制文件在用于启动实例的参数文件中的 CONTROL_FILES 初始化参数中指定。Oracle 然后读取控制文件以获取数据库的数据文件和重做日志文件的名称。
此时,数据库仍处于关闭状态,只有数据库管理员可以访问。数据库管理员可以在完成特定维护操作的同时保持数据库关闭。但是,该数据库尚不可用于正常操作。
根据这段话,当数据库被安装时,数据库管理员可以访问它。这里的访问是否意味着管理员只能执行读取操作,或者还可以修改数据库(例如通过创建数据文件)?
我有一个表,其中有一列包含 JSON 对象。在这些对象中,我需要找到type
值为 3 的键。找到后,我需要price
在嵌套的 JSON 对象中用新值 99更新键data
。其他类型的价格应保持不变。如有任何帮助,我将不胜感激。谢谢你!
-- Create the new table
CREATE TABLE ModifiedTable (
accountIdentifier UNIQUEIDENTIFIER,
settings NVARCHAR(MAX)
);
-- Insert the modified values
INSERT INTO ModifiedTable (accountIdentifier, settings)
Values (
'8E9B45D7-8AEC-EA11-8B03-000D3A12F259',
'[{"type":3,"data":{"required":false,"price":0.5,"display_name":false}},{"type":5,"data":{"required":true,"scaling_factor":2.5, "price":1,"date_format":"yyyy-MM-dd"}}]'
),
(
'C03D12B1-8BEC-EA11-8B03-000D3A12F259',
'[{"type":7,"data":{"required":true,"scaling_factor":1.75,"tooltip":"Sample tooltip", "price":1}},{"type":4,"data":{"required":false,"scaling_factor":1.2,"char_limit":50,"multi_line":true}},{"type":3,"data":{"required":false,"price":0.7,"display_name":false}}]'
);
-- Select from the modified table
SELECT * FROM ModifiedTable;
--drop table ModifiedTable
我有一个文件要导入到在 Ubuntu 20.04 上运行的 SQL Server 2019 数据库中。该文件位于/proc
目录中,我已经chmod 777
对该文件进行了操作。但是,当尝试使用 Openrowset 从 SQL Server 查询中读取它时,出现此错误:
select * from openrowset(bulk '/proc/loadavg', SINGLE_CLOB) cpu_load
消息 12703,级别 16,状态 1,第 1 行
未找到引用的外部数据源“(null)”。
如果我将该文件复制到该/var/opt/mssql
目录,它将工作并且我可以查询该文件。为什么我不能从中读取文件/proc
但可以从中读取文件/var/opt/mssql
?/proc
另外,如何从 SQL Server 中访问该文件?
我正在尝试安装 cassandra,但我不需要最新版本 4.0.9,我需要 4.0.5
我尝试了以下步骤
cat cassandra.sources.list
deb https://debian.cassandra.apache.org 40x main
apt-get install cassandra=4.0.5
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Version '4.0.5' for 'cassandra' was not found
我安装的时候不说版本,安装的是4.0.9,如果需要专门安装4.0.5怎么办?
我必须设置
SQLNET.ALLOWED_LOGON_VERSION_SERVER=12a
在我所有的数据库服务器上。
如何检查客户端是否仍在使用旧的身份验证协议?
我知道我可以检查DBA_USERS
旧密码版本。但是,如何检查用户是否实际使用旧密码版本?听众.log?审计追踪?
请建议。
请给我一些建议。
我已经为我的 SQL 2019 可用性组配置了自动种子设定。我的两个集群节点各有 8GB RAM 和 4 个处理器。实例中较小的数据库已成功添加到 AG,没有任何问题。但是,当我尝试将其添加到 AG 时,一个30GB 的数据库不断警告数据和日志文件的可用磁盘空间不足。数据文件存储有大约 70GB 的空闲空间,日志存储大约有 74GB 的空闲空间。
我忽略该消息并继续将数据库添加到 AG,并得到如下不同的行为:
有时它似乎已成功添加到 AG,因为 SSMS 仪表板显示 AG 健康。然而,sys.dm_server_hadr_automatic_seeding DMV 有时在一个节点上显示播种状态为已完成(failure_state_desc = NULL),而另一个节点失败(failure_state_desc = 检查是否需要播种)。有时两个节点都失败了。
有几次我有一个 SQL 转储错误日志
有一次,它似乎成功了,但我无法在 SSMS 中刷新辅助节点连接,并得到了一个 SQL 转储错误日志
在所有情况下,我都发现任务管理器中的内存使用率飙升至超过 4GB。我的 SQL Server 配置的最大内存约为 5GB。
请注意,此新部署的旧系统不使用 AG 技术,它使用更小的磁盘空间来存储数据和日志文件,并在其旧版本的 SQL 上成功运行。
请问我的问题:
我已经对这个问题做了很多研究,但如果有人能够提供一些建议,我将不胜感激。
谢谢
我有一个非常有趣的问题,cassandra 是否有可能不会为任何已修复的密钥空间启动重建过程?如果我们使用此选项很少处于未修复状态:nodetool rebuild --DATACENTER -ks KEYSPACE_NAME。
我们昨天看到了一个奇怪的实验,如果我们的集群中几乎没有未修复的键空间,我们决定改变例如一些已经修复的键空间的复制策略并使用这个命令:nodetool rebuild --DATACENTER -ks KEYSPACE_NAME - 此命令失败:无法找到足够的流范围来源,但如果我们在没有 --DATECENTER 的情况下启动命令:nodetool rebuild -ks KEYSPACE_NAME - 数据将出现在所有新节点上,而不是只有一个,我们可以使用这个方法还是坏主意?