小编And*_*y M的帖子

如何在大插入期间最小化日志记录?

在夜间计划任务期间,我使用select into然后添加聚集索引从头开始创建一个大表。我想在整个过程中最大限度地减少日志记录量,因为我用于日志备份传送的带宽有限。

如果有帮助,我很乐意考虑另一种方法。

sql-server-2008 logs

6
推荐指数
2
解决办法
3337
查看次数

在分组数据中查找连续范围

我有一个具有以下结构的表:

CREATE TABLE `Rings` (
    ID_RingType CHAR(2),
    Number MEDIUMINT UNSIGNED,
    ID_User INT(11)
);
Run Code Online (Sandbox Code Playgroud)

和数据:

INSERT INTO `Rings` VALUES
  ('AA',1,1),
  ('AA',2,1),
  ('AA',3,1),
  ('AA',11,1),
  ('AA',12,1),
  ('AA',13,1),
  ('AA',14,1),
  ('AA',15,1),
  ('AB',16,1),
  ('AB',17,1),
  ('AB',18,1),
  ('AB',19,1),
  ('AB',20,2),
  ('AB',21,2),
  ('AB',22,2);
Run Code Online (Sandbox Code Playgroud)

我想组基于所述数据ID_UserID_RingType和用于数字的每个连续范围列出MIN和MAX。

结果应如下所示:

ID_User | ID_RingType | MIN  | MAX
1       | 'AA'        | 1    | 3
1       | 'AA'        | 11   | 15
1       | 'AB'        | 16   | 19
2       | 'AB'        | 20   | 22
Run Code Online (Sandbox Code Playgroud)

我浏览了关于这个主题的几篇文章,但无法调整它们以适合我的数据。

任何帮助,将不胜感激。

mysql group-by gaps-and-islands

6
推荐指数
2
解决办法
1277
查看次数

检测两个时间段是否重叠

我有一个 HR 系统,我需要检测新的请假(休假)请求是否与现有的请求冲突。我已经根据一整天的时间编写了代码来做到这一点;我现在需要做基于半天的比较。

这是我的数据结构(和数据格式)。我正在使用 SQL Server 2008 R2。

StartDate     (datetime)
EndDate       (datetime)
Run Code Online (Sandbox Code Playgroud)

以下 2 个变量显示用户是休息半天还是一整天。列出并解释了每个选项的选项。

StartDateAMPM (int) 0=All Day (StartDate may or may not be the same as the EndDate), 
                    1=AM, (User is out of the office only in the morning)
                    2=PM  (User is out of the office only in the afternoon)

EndDateAMPM   (int) 0="All Day" / "half day" / "StartDate = EndDate", 
                    1=AM (The user is off for the morning only)

**NOTE This cannot be PM (as you cannot …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2

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

将数据从 Excel 导出/导入到带有查询的表中

我是一个对学习和实施我学到的东西感兴趣的新手。这些天我一直在研究 SQL Server 2014,我很喜欢它。

我遇到过一些场景,我会将一个包含 70,000 行和大约 10-12 列的 Excel 文档导入 SQL Server(一个表),利用它来比较/插入/修改其他表中的现有数据。我目前正在使用 GUI 中可用的手动功能(右键单击 >> 任务 >> 导入)在需要时进行导入和导出;但是,我的一位同事告诉我,同样的过程也可以通过脚本/查询来完成。

有人可以让我知道编写查询以将 XLS、XLSX、CSV 格式文件导入表的正确方法是什么吗?

PS:我也试着读一些职位约OPENDATASOURCEOPENROWSET在那里我已经没有成功,始终得到了一些错误,对此我没有任何线索。所以,想看看是否还有其他方法,并热衷于学习他们的程序。

sql-server t-sql sql-server-2008-r2 sql-server-2014

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

Postgres 中的宽度解释?

在 Postgres 中解释计划有宽度,其中(每 文档)是:

此计划节点输出的行的估计平均宽度(以字节为单位)。

我的问题:宽度何时为 0?因为在文档的示例中,有时如下所示:

EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;

                                  QUERY PLAN
------------------------------------------------------------------------------
 Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)
   Recheck Cond: (unique1 < 100)
   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)
         Index Cond: (unique1 < 100)
Run Code Online (Sandbox Code Playgroud)

explain postgresql-9.5

6
推荐指数
1
解决办法
1515
查看次数

转换字符集和外键约束

我正在尝试将 MySQL 数据库以及所有包含表的字符集和排序规则从utf8 / utf8_unicode_ci转换为utf8mb4 / utf8mb4_unicode_ci

我将我的数据库名称称为:MyDB
我将我的表称为:MyTable1 [、MyTable2MyTable3等]

我已经使用以下命令设置了数据库字符集和排序规则:

ALTER DATABASE MyDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

然后我使用这个 SQL 脚本生成所有表命令:

SELECT CONCAT("ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ",
    "ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ") 
    AS alter_sql
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'MyDB';
Run Code Online (Sandbox Code Playgroud)

此 SQL 生成了一个包含以下内容的表:

ALTER TABLE MyDB.MyTable1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE MyDB.MyTable1 CONVERT TO CHARACTER SET utf8mb4 …
Run Code Online (Sandbox Code Playgroud)

mysql foreign-key collation character-set

6
推荐指数
1
解决办法
6628
查看次数

插入依赖读取时处理并发

[短的]

我有以下情况:用户A尝试将数据DA插入数据库。要检查是否A允许用户插入DA,我需要运行查询并进行一些计算。我遇到的问题是,当我进行计算时,另一个用户 ( B) 也尝试将数据插入到数据库中。现在,假设两个用户在插入新数据之前都读取了计算所需的信息,那么他们可能都被清除插入,而来自用户的数据A将禁止用户B插入,从而使数据库处于不一致状态。

如何在 Azure SQL 数据库 V12 中解决这种并发问题?

[详细的]

用户插入的数据是时间间隔的开始和结束,例如start: 6:00, end: 7:00。要求是不能有时间间隔重叠。这意味着区间start: 6:00, end: 9:00start: 5:00, end: 6:00不能同时存在。目前我正在做的是检查是否有任何行与用户尝试使用以下查询插入的新间隔重叠:

SELECT COUNT(*) FROM [Table1] WHERE Start <= attempEnd && End >= attemptStart
Run Code Online (Sandbox Code Playgroud)

现在,问题是多个用户可能试图插入一个间隔,而这些新间隔可能相互重叠。但是,在上面的查询运行时,此信息可能不可用,这会导致插入重叠间隔。

如何在 Azure SQL 数据库 V12 中解决这种并发问题?

sql-server concurrency azure-sql-database

6
推荐指数
1
解决办法
499
查看次数

从表中获取 JSON 列包含特定值的所有行

我正在努力从我的 PostgreSQL 数据库中的 JSON 列中获取数据。在我们的users表中,我们有一known_ips列,它是一个 JSON 列,保存给定用户已知的 IP 地址的平面数组,如下所示:

# select email, known_ips from users limit 3;
       email       |          known_ips                                     
-------------------+-------------------------------
 user1@example.com | ["192.168.1.1","192.168.1.2"]
 user2@example.com | ["192.168.1.3"]
 user3@example.com | ["192.168.1.2"]
(3 rows)
Run Code Online (Sandbox Code Playgroud)

我想要做的是从其列中的一组 IP 地址(在本例中为 192.168.1.1 或 192.168.1.2)中选择具有 IP 地址的所有用户known_ips。因此,在这种情况下,user1 和 user3 的 IP 地址为 .1 或 .2,因此我希望返回它们,而不是 user2,因为我不是在寻找 .3 地址。

我尝试了以下查询,但都无济于事:

  • database=# select email, ip from users, json_array_elements(known_ips) as ip where ip in("192.168.1.1","192.168.1.2");
    ERROR:  column "192.168.1.1" does not exist
    LINE 1: ... json_array_elements(known_ips) …
    Run Code Online (Sandbox Code Playgroud)

postgresql syntax json

6
推荐指数
1
解决办法
5283
查看次数

这个 SQL Server PK 违规怎么可能?

我收到了一个我认为不可能的错误。我有一个 SQL Server(11.0.6594 版)表,如下所示:

CREATE TABLE [IDMaster](
  [ID] [int] NOT NULL,
 CONSTRAINT [PK_IDMaster] PRIMARY KEY CLUSTERED 
([ID] ASC) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

它基本上应该做 IDENTITY 现在所做的事情(已经有一段时间了)——它用于获取新的唯一整数值​​,这些值在其他几个表中使用。

现在我有一个 SQL 语句,它选择 MAX 值,添加到它,然后将该值插入到同一个表中——所有这些都在一个语句中。所以从理论上讲,这个语句不可能违反 PK(尽管我认为可能会陷入僵局)。但是,不知何故,它越来越之一。

违反 PRIMARY KEY 约束“PK_IDMaster”。无法在对象“IDMaster”中插入重复键。重复的键值为 (25309587)。

我不知道这怎么可能,但显然是这样;因为它刚刚发生。

想象一下,尝试从同一张表中生成新 ID 值的任何其他方法的疯狂、奇怪的混合,它们可能与此系统中存在的内容相去甚远。但是我想不出它们会导致该特定错误的任何方式。这是我的理解是SQL Server所使用的交易锁定强制执行,不具有(NOLOCK)一个SQL语句,它或任何东西内,也不能与行,它是引用的任何干扰。

唯一的另一个因素,我认为可能不相关但谁知道,是该 SQL 包含在 TRY 中,并设置了一些选项。这是出现该错误的 SQL:

SET XACT_ABORT ON;
SET IMPLICIT_TRANSACTIONS ON;
BEGIN TRY

INSERT INTO IDMaster (ID) 
 SELECT COALESCE(
  -- make sure the new value is odd
  CASE WHEN MAX(COALESCE(ID,0)) % 2 = …
Run Code Online (Sandbox Code Playgroud)

sql-server primary-key transaction

6
推荐指数
2
解决办法
3053
查看次数

一组表上的同时更新和删除是否会导致使用 AccessExclusiveLock?

我正在使用 Postgres 9.3。

我有 2 个表 :authn_sessioncustomer. 每个都authn_session属于 a customer(因此有 acustomer_id作为列,这是客户的 FK id)。

注意:这些表包含对其他表和索引的额外 FK 引用。

现在,我开始 2 个不同的事务,它们按照下面提到的顺序执行以下操作:

发送:1

BEGIN; 
UPDATE customer 
    SET customer__created_by = 
            (case when customer__created_by = 1 then 5 
             else customer__created_by end), 
        customer__modified_by = 
            (case when customer__modified_by = 1 then 5 
             else customer__modified_by end);
UPDATE authn_session 
    SET authn_session__created_by = 
            (case when authn_session__created_by = 1 then 5
             else authn_session__created_by end),
        authn_session__modified_by = 
            (case when authn_session__modified_by = 1 …
Run Code Online (Sandbox Code Playgroud)

postgresql deadlock locking postgresql-9.3

6
推荐指数
1
解决办法
611
查看次数