我有data
旧版 MariaDB 安装的目录,其中包含各种数据库。我没有安装MariaDB,而且我不知道之前安装过哪个版本的MariaDB,但它可能已经有一两年了。
我尝试重新安装 MariaDB ( v11.0.2
) 并使用相同的data
目录,但收到错误“数据目录无效,...,数据目录存在且不为空”。
如何重新安装 MariaDB 并使用现有数据?
我有data
旧版 MariaDB 安装的目录,其中包含各种数据库。我没有安装MariaDB,而且我不知道之前安装过哪个版本的MariaDB,但它可能已经有一两年了。
我尝试重新安装 MariaDB ( v11.0.2
) 并使用相同的data
目录,但收到错误“数据目录无效,...,数据目录存在且不为空”。
如何重新安装 MariaDB 并使用现有数据?
我在没有安装 PostgreSQL 的 CentOS 8 服务器上使用 pgbench 工具。如果 Postgresql 10 安装命令是:
dnf install postgresql-contrib
pgbench --version
pgbench (PostgreSQL) 10.23
对于 PostgreSql 13,它不起作用:
pgbench --version
-bash: pgbench: command not found
我应该安装什么包来安装 pgbanch 工具?
假设我们有一个关系 R(A, B, C) 与 FD A -> B。假设,对于 R 中的两个元组 t 和 u,如果 t[C] 和 u[C] 都满足布尔条件 -假设小于常数 C - 则 t[B] = u[B]。这是否构成函数依赖?
从更实际的意义上来说,如何规范化这种关系并消除 R(A, B, C) 中的明显冗余并允许无损连接?
我有一个包含三列的表:user_id, customer_id, and order_id
。
在我的查询中,我经常使用以下条件过滤数据:
... WHERE user_id = 23434 AND customer_id = 234234 AND order_id IN [23334, 23423, 23452];
我想通过在这些列上创建复合索引来优化查询性能,但我不确定这些列应按什么顺序包含在索引中。
考虑到列的选择性为customer_id
、ordre_id
和user_id
,创建复合索引的最佳顺序是什么?
我可以这样做(customer_id, order_id, user_id)
,但是这里要过滤出记录user_id
,数据库必须访问传递范围内的每个叶节点order_id
。
但是,如果我这样做(customer_id, user_id, order_id)
,这里它将扫描许多与 匹配的索引并进行过滤,然后从或user_id
获取行。我在这里不确定。如果有人可以提供更多这方面的信息。disk
shared_buffers
我应该根据色谱柱的选择性对它们进行优先排序还是采用不同的方法?
我更倾向于(customer_id, order_id, user_id)
,但我需要一些澄清。
我想将Excel文件链接到SSMS中的解决方案以方便参考。添加它们效果很好。它们显示在“杂项”下。SSMS 通过将徽标放在它们旁边来识别它们是 Excel 文件。但是,当我选择一个时,我收到错误。
微软 SQL Server 管理工作室
无法打开文件 Summary.xlsx。文件可能没有关联的编辑器。
奇怪的是,一旦选择,我可以双击该文件,它就会按预期在 Excel 中打开。
我尝试在“工具”>“选项...”>“文本编辑器”>“文件扩展名”中设置扩展名,但显然,这是针对文本编辑器的。列表中的可用编辑器都不是 Excel 编辑器。因此,我将其设置为自动编辑器选择器 (XML)选项。错误仍然发生。
我还评论过Management Studio 无法识别其他文件扩展名,并且不认为这是同一个问题。如果我错了,请纠正我。
这个想法只是为了让文件方便。我可以双击它们在 Excel 中打开它们,但是有什么方法可以消除选择文件时发生的错误吗?我正在做的事情是不寻常的做法吗?
组件名称 | 版本 |
---|---|
SQL Server管理工作室 | 19.0.20209.0+f9a9d8f6 |
SQL Server 管理对象 (SMO) | 16.200.48036.0+7d3b143d945e1aa638acdb02c0364e263d5ec973 |
微软 T-SQL 解析器 | 16.0.22524.0+62eedb15cd3cde34e51c8fbbdf9b06e575ec912e |
Microsoft 分析服务客户端工具 | 16.0.19993.0 |
Microsoft 数据访问组件 (MDAC) | 10.0.19041.3208 |
微软MSXML | 3.0 6.0 |
微软.NET框架 | 4.0.30319.42000 |
操作系统 | 10.0.19045 |
这是针对不断请求新帖子、检查是否有人关注、获取评论等的社交媒体。
我不会指定哪种语言,因为它并不重要,但是,目前在我的代码中我
然后重复
相反,我应该使用一个建立连接的系统,然后在有时运行更新时从中执行操作?
谢谢!
我正在研究从当前产品表到新表的数据迁移。我已经准备并测试了基于 [Keycol] 和 [col8] (datetime) 的批量插入脚本。此次进口预计将持续10天左右。
--old table
SELECT TOP (1000) [Keycol],[col2],[col3],[col4],[col5],[col6],[col7],[col8],[col9],[col10]
FROM [dbo].[oldtable]
--newtable with identity column
SELECT TOP (1000) [NewIdentitycol],[Keycol],[col2],[col3],[col4],[col5],[col6],[col7],[col8],[col9],[col10]
FROM [dbo].[newtable]
我正在 oldtable 上准备插入/更新/删除触发器,以在开始导入后捕获任何插入/更新/删除操作,并在 newtable 中执行相同的操作。
我对触发器很陌生,我在 Google 中看到的大多数参考文献都只是跟踪任何一列的更新。我基本上想编写触发器来捕获对跟踪表中任何列的更新,如果该记录已导入到新表中,则应用该更新。
我参考了https://www.sqlshack.com/solve-identity-crisis-sql-server/
插入看起来很简单,但不确定我在更新/删除中尝试的内容是否适合我的情况。我要做POC,有没有更好的方法来处理这个问题?请告诉我。
CREATE TRIGGER Migration_trigger
ON dbo.oldtable
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
SET NOCOUNT ON;
-- INSERTS ONLY
INSERT INTO dbo.newtable
([Keycol],[col2],[col3],[col4],[col5],[col6],[col7],[col8],[col9],[col10])
SELECT Inserted.[Keycol],Inserted.[col2],Inserted.[col3],Inserted.[col4],Inserted.[col5],Inserted.[col6],Inserted.[col7],Inserted.[col8],Inserted.[col9],Inserted.[col10]
FROM Inserted
LEFT JOIN Deleted
ON Deleted.[Keycol] = Inserted.[Keycol]
WHERE Deleted.[Keycol] IS NULL;
-- DELETE ONLY already imported record
IF(SELECT [Keycol] from dbo.newtable n
join inserted on n.[keycol] = inserted.[keycol]
join deleted on inserted.[keycol] = Deleted.[keycol] where n.[Keycol]= Deleted.[Keycol]) IS NOT NULL
BEGIN
DELETE
FROM dbo.newtable
WHERE newtable.[Key] IN (
SELECT Deleted.[Keycol]
FROM Deleted
LEFT JOIN Inserted
ON Deleted.[Keycol] = Inserted.[Keycol]
WHERE Inserted.[Keycol] IS NULL);
END
-- UPDATE ONLY already imported record
IF(SELECT [Keycol] from dbo.newtable n
join inserted on n.[keycol] = inserted.[keycol]
join deleted on inserted.[keycol] = Deleted.[keycol] where n.[Keycol]= Deleted.[Keycol] and [Keycol]=inserted.[Keycol] ) IS NOT NULL
BEGIN
UPDATE dbo.newtable
SET [Keycol] = Inserted.[Keycol],[col2]=Inserted.[col2],[col3]=Inserted.[col3],[col4]=Inserted.[col4],[col5]=Inserted.[col5],[col6]=Inserted.[col6],
[col7]=Inserted.[col7],[col8]=Inserted.[col8],[col9]=Inserted.[col9],[col10]=Inserted.[col10]
FROM Inserted
INNER JOIN Deleted
ON Deleted.[Keycol] = Inserted.[Keycol]
INNER JOIN dbo.newtable
ON newtable.[Keycol] = Inserted.[Keycol]
END
END
谢谢
我正在创建一个 PostGIS 数据库,其中许多模式应该具有相同的约束。这意味着将来,类似的表格应该具有相同的输入值限制。
我的约束是这样的
ALTER TABLE "Test project"."rainbow table" -- the table I want to change
ADD CONSTRAINT values_constraint [the name of the constraint]
CHECK (colors IN ('red', 'green', 'blue')) -- limiting 3 values in colors
所以我想我会利用枚举来完成此操作,我可以为整个数据库定义和更改(如果发生更改,则在删除后重新创建)。
然而,我正在努力调用约束定义中的枚举值,我相信这应该是一个检查
ALTER TABLE "Test project"."rainbow table" -- the table I want to change
ADD CONSTRAINT values_constraint [the name of the constraint]
CHECK (colors IN (/*HOW TO REFERENCE THE ENUM ARRAY HERE?*/))
我正在使用 MySQL 8.0.30,并且知道它支持功能索引。但是我尝试根据一些字段的总和创建一个索引,如下所示非常简单,但是没有使用索引,即使在可能的索引中,它也没有显示。
这是我的桌子
CREATE TABLE `sample_product` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`avai_qty` double DEFAULT NULL,
`picked_qty` double DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `functional_index` (((`avai_qty` + `picked_qty`)))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
这是我的查询
select * from sample_product where avai_qty + picked_qty > 5000;
我尝试运行解释
{
"query_block": {
"cost_info": {
"query_cost": "0.35"
},
"select_id": 1,
"table": {
"access_type": "ALL",
"attached_condition": "((`sample_product`.`avai_qty` + `sample_product`.`picked_qty`) > 5000)",
"cost_info": {
"data_read_per_join": "1K",
"eval_cost": "0.10",
"prefix_cost": "0.35",
"read_cost": "0.25"
},
"filtered": "100.00",
"rows_examined_per_scan": 1,
"rows_produced_per_join": 1,
"table_name": "sample_product",
"used_columns": [
"id",
"name",
"avai_qty",
"picked_qty"
]
}
}
}
我不确定这是 MySQL 的错误还是我做错了什么。
我搜索了 PostgreSQL 和 Google 的文档,但没有找到该函数pg_get_tabledef
, whilepg_get_indexdef
存在。
没有吗pg_get_tabledef
?也许实施起来太困难了?但是 pgAdmin4 可以为数据库中的每个对象提供非常漂亮/清晰/干净的 DDL 脚本。效果如何?
事实上,我需要比较两个数据库的许多表的定义(How to rapid Compare of multiple tables of两个 PostgreSQL 数据库的定义?)。
尽管有pg_dump --section=pre-data
并且pg_dump --section=post-data
可以转储所有定义,但比较结果仍然是一项艰巨的工作。我需要准确找出哪些表结构已更改。
所以我期待pg_get_tabledef
,比如pg_get_indexdef
,但是对于桌子。奇怪的是,虽然存在,但没有这样的功能pg_get_indexdef
。
请给我一些提示吗?谢谢!