标签: sql

如何计算唯一值?

我正在尝试获取唯一 ip_addresses 的数量(在本例中为“3”)。该表如下所示:

结构:

CREATE TABLE bandits (
  key text NOT NULL,
  ip_address inet,
  offence text,
  count bigint DEFAULT 1);
Run Code Online (Sandbox Code Playgroud)

数据:

从标准输入复制强盗(key、ip_address、offence、count);
127.0.0.1_testing 127.0.0.1 测试 1
127.0.0.2_testing 127.0.0.2 测试 3
127.0.0.2_testing2 127.0.0.2 testing2 1
127.0.0.3_testing 127.0.0.3 测试 1

postgresql sql

9
推荐指数
1
解决办法
2万
查看次数

mysqldump 忽略带有通配符的表

我需要转储一个包含 50 个奇数表的数据库,其中我想排除大约 15 个带有前缀的奇数表 exam_

我尝试过mysqldump --ignore-table=dbname.exam_* 甚至尝试过--ignore-table=dbname.exam_% 它没有按预期工作。我不得不--ignore-table多次使用。

编辑:我看到了一些列出tables not like tablename_%并将其传递给mysqldump.

但是,我想知道 mysqldump 或 mysql 中是否有选项,因此无需编写脚本即可执行相同操作。

编辑添加:最终使用脚本转储数据库,不包括表,ignore-table=多次使用。

mysql sql wildcards ignore

9
推荐指数
1
解决办法
2万
查看次数

是否有比更改每一列更简单的方法来解决 SQL Server/数据库排序规则不匹配问题?

免责声明:我知道这个问题之前已经被问过一百次了,但我只是想检查一下,在我继续编写/获取大量代码之前,我可能错过了没有更简单的解决方案。

我们的软件使用最初为 SQL Server 7 设计的数据库,因此,创建它的所有脚本都没有为任何字符列指定任何显式排序规则。相反,当一个数据库被创建/恢复到 SQL Server 2000 或更高版本时,每一列都会继承数据库排序规则(这恰好是SQL_Latin1_General_CP1_CI_AS因为这是 SQL Server 7 的默认设置)。

从理论上讲,这不会有太大影响,因为如果我们的数据库是在客户的服务器上从头开始创建的,它会继承客户的服务器排序规则(通常是现代安装默认设置Latin1_General_CP1_CI_AS),并且一切正常。但是,当他们向我们发送数据库备份,或者我们向他们发送数据库备份时,这种情况就会崩溃,并且每当代码尝试访问临时表等时,我们或他们都会遇到可怕的排序规则不匹配错误。

我们曾尝试教育客户安装或重建他们的 SQL Server 实例以使用我们首选的排序规则,但当然这并不总是发生,也不总是可能的。

涉及创建新数据库和复制数据的解决方案对我们来说并不实用,我们需要一个“魔杖”,我们可以在实时数据库中挥动它以在不干扰数据的情况下就地更正所有列。我正在考虑编写一个实用程序来做到这一点,但由于这将是一项艰巨的工作,有人有更简单的建议吗?

sql sql-server

8
推荐指数
1
解决办法
3603
查看次数

MySQL 在某些方面比 PostgreSQL 更好吗?

我知道这个问题听起来很挑衅,但事实并非如此。我最近发现 MySQL 在很多领域都存在限制,并且越来越喜欢 PostgreSQL。它的扩展性更好,并且比 MySQL 更尊重 SQL 标准。

我仍然是 PostgreSQL 世界的新手,并且由于我愿意在我未来的所有项目中远离 MySQL,我想知道的是:MySQL 是否有任何特定的特性使它做得更好(如更多高性能或更用户友好等..)比在 PostgreSQL 中?

我想知道我会从 MySQL 中错过什么。我已经发现 MySQL 中的 AUTO_INCREMENT 字段比 PostgreSQL 中的 SEQUENCES 更方便,而且过去在 Windows 中的部署是有问题的(不再是问题了。对我来说从来都不是问题)。

还有什么?

mysql postgresql sql

8
推荐指数
1
解决办法
3704
查看次数

将 MySQL 表的排序规则更改为 utf8_general_cs

我试图将整理 MySQL 表更改为 utf8_general_cs 但出现以下错误:

mysql> ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE 'utf8_general_cs';
ERROR 1273 (HY000): Unknown collation: 'utf8_general_cs'
Run Code Online (Sandbox Code Playgroud)

我运行“SHOW COLLATE”命令,结果中没有“utf8_general_cs”。

我现在能做什么?

mysql sql

8
推荐指数
1
解决办法
2万
查看次数

带有数据库后端的 DHCP 服务器

我一直在寻找替代我的(古老的)ISC-DHCPd 服务器的东西。

带有数据库后端的 DHCP 服务器对我来说听起来是个好主意,因为这样我的服务器就可以有一个漂亮、友好的 Web 界面。令人惊讶的是,我无法提供任何主要的开源项目。

有人知道吗?我还阅读了有关修改 ISC 以使用数据库后端的信息……谁能告诉我此解决方案对于繁忙的生产服务器是否足够稳定?还是一起使用数据库是一个坏主意™?

PS - /sf/ask/62572121/看起来 SO 无法回答这个古老的类似问题。

编辑:我正在免费的操作系统平台、Linux 或 BSD 上寻找一些东西。如果有一些绝对很棒的东西,但仅限 Windows,仍然感兴趣。

dhcp sql database isc-dhcp

8
推荐指数
1
解决办法
2万
查看次数

如何附加来自不同 SQL Server 安装的 mdf 文件?

嗨,我有来自我现在无法访问的机器的不同 SQL Server 安装的 mdf 和 ldf 文件,并希望将它们附加到我当前的安装中以获取数据。当我尝试这个时,我收到一个错误:

Cannot attach a database with the same name as an existing database.  (Microsoft.SqlServer.Smo)
Run Code Online (Sandbox Code Playgroud)

这是因为 mdf 被命名为 msdbdata,就像我当前的安装一样。我不知道现在是否有办法重命名这个数据库或者我能做什么。任何帮助,将不胜感激。谢谢!

sql sql-server-2005

8
推荐指数
1
解决办法
2万
查看次数

vCPU 是 1 Socket 还是单核?

目前我有一个带有 2 (vCPU) 处理器的 Hyper-v VPS。我想安装限制为 1 个套接字或 4 个内核的 SQL Server Express 2012,以较小者为准。

我的问题: vCPU 算作单核还是插槽?或者完全不同的东西?

vps sql vcpu

8
推荐指数
1
解决办法
2267
查看次数

将 SQL 数据库备份到外部 USB 硬盘是个好主意吗?

我将在海上石油平台(机架服务器)上安装数据库系统。他们的硬件和空间非常有限,因此不可能发送备份基础设施。也无法通过 FTP 发送备份,因为它们甚至没有文件服务器。

我正在考虑将 SQL 数据库备份到便携式美元硬盘上。USB 硬盘驱动器将始终直接插入服务器。每周一次,他们会将硬盘更换为新的/旧的。

这样做是个好主意吗?如果没有,你能提出更好的解决方案吗?

backup sql usb

8
推荐指数
2
解决办法
2262
查看次数

dbcc checkdb('XYZ', REPAIR_ALLOW_DATA_LOSS) 表示XYZ已经打开并且一次只能有一个用户

我有一个数据库 XYZ,它有一个损坏的日志文件,现在由于日志文件完全无法使用,这导致这个特定的数据库无法使用,我需要能够重建它。

我已经对这个过程进行了大量研究,但我陷入了 dbcc checkdb 的困境。

我运行了命令

alter database xyz SET single_user with immediate rollback
Run Code Online (Sandbox Code Playgroud)

随后

use master
dbcc checkdb('xyz',REPAIR_ALLOW_DATA_LOSS)
Run Code Online (Sandbox Code Playgroud)

但我一直遇到这个错误:

Msg 924, Level 14, State 1, Line 2
Database 'XYZ' is already open and can only have one user at a time.
Run Code Online (Sandbox Code Playgroud)

我研究的所有内容都表明数据库需要处于紧急模式,然后该数据库需要处于单用户模式。如果我将数据库恢复为多用户模式,则表明数据库需要处于单用户模式。好吧,我这样做,然后得到这个问题。

我跑了

select spid from master..sysprocesses where dbid = DB_ID('XYZ') and spid <> @@spid
Run Code Online (Sandbox Code Playgroud)

检查使用数据库的任何进程,但没有返回任何行,并且日志不显示有关正在恢复的数据库或任何此类性质的任何信息。DB 确实显示为“紧急情况”。

有任何想法吗?

sql sql-server tsql sql-server-2008

7
推荐指数
1
解决办法
3万
查看次数