给定一个只有 IDENTITY 列的表,如何插入新行?我尝试了以下方法:
INSERT INTO TABLE
(Syntax error)
INSERT INTO TABLE VALUES()
(Syntax error)
INSERT INTO TABLE (Id) VALUES()
(Syntax error)
Run Code Online (Sandbox Code Playgroud)
我正在测试一些东西,只需要 IDENTITY 列。它不是用于生产。否则,这样的表可以用作序列生成器,不需要其他列。
我们正在运行 m1.xlarge MySQL RDS 服务器,但在 CPU 使用率高时遇到了一些问题。几周前,我们遇到了一些问题,大型实例的 CPU 利用率达到 100%。当我们将大小升级到 xlarge 时,情况稳定了一段时间,但 CPU 使用率逐渐再次上升。
在过去一周左右的时间里,CPU 利用率一直处于 90 年代的高位,昨天一直达到 100% 左右,这使我们的生产站点陷入停顿。重新启动数据库服务器后,CPU 使用率在数小时内回升至相同水平。
我已经在 mysql 服务器上运行了 show processlist,并且一直在通过 MySQL admin 进行监控。似乎也没有任何特别长时间运行的查询或大量查询。有几个进程长时间处于睡眠状态……这些是在我们的主应用程序之外运行的独立工作守护进程,它们与数据库进行通信。我在下面的 processlist 输出中复制了服务器名称,以说明它们是什么:
+------+----------+---------------------------------------------------+--------------+---------+-------+--------------+----------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------+----------+---------------------------------------------------+--------------+---------+-------+--------------+----------------------------------------------------------------------------------------+
| 13 | rdsadmin | localhost:43513 | mysql | Sleep | 14 | | NULL |
| 15 | proddbuser | app-server-1.eu-west-1.compute.internal:36460 | proddb | Sleep | 46 | | …Run Code Online (Sandbox Code Playgroud) 我正在尝试将表planet_osm_polygon从一个数据库复制osm到另一个数据库test。我su postgres并执行了pg_dump.
问题:但是我收到错误could not change directory to "/root"并且Password:提示出现了两次!有没有办法pg_dump在登录时执行root?
root@lalaland:~# su postgres
postgres@lalaland:/root$ pg_dump -h localhost "osm" --table "public.planet_osm_polygon" |
psql -h localhost "test" --table "staging.planet_osm_polygon"
could not change directory to "/root"
could not change directory to "/root"
Password: Password:
Run Code Online (Sandbox Code Playgroud)
问题#2:public即使我通过了 flag ,表似乎也被复制到了模式中--table="staging.planet_osm_polygon"。为什么不将其复制到 schema staging?
我想要GRANT USAGE一个给定数据库的用户/角色。数据库有许多模式。
我知道有一个ON ALL TABLES IN SCHEMA,但我想要“所有模式”。我试过了GRANT USAGE .. ON DATABASE,但这显然是错误的(它实际上并不存在)。
这是针对 Postgres 9.3 或 9.4,它恰好是 AWS RDS 上的服务器。
我有以下表格和索引定义:
CREATE TABLE munkalap (
munkalap_id serial PRIMARY KEY,
...
);
CREATE TABLE munkalap_lepes (
munkalap_lepes_id serial PRIMARY KEY,
munkalap_id integer REFERENCES munkalap (munkalap_id),
...
);
CREATE INDEX idx_munkalap_lepes_munkalap_id ON munkalap_lepes (munkalap_id);
Run Code Online (Sandbox Code Playgroud)
为什么在以下查询中没有使用 munkalap_id 上的任何索引?
EXPLAIN ANALYZE SELECT ml.* FROM munkalap m JOIN munkalap_lepes ml USING (munkalap_id);
QUERY PLAN
Hash Join (cost=119.17..2050.88 rows=38046 width=214) (actual time=0.824..18.011 rows=38046 loops=1)
Hash Cond: (ml.munkalap_id = m.munkalap_id)
-> Seq Scan on munkalap_lepes ml (cost=0.00..1313.46 rows=38046 width=214) (actual time=0.005..4.574 rows=38046 loops=1)
-> Hash (cost=78.52..78.52 rows=3252 …Run Code Online (Sandbox Code Playgroud) 我的 SQL Server 2008 R2 有 323 个数据库,在我的 C: 驱动器上消耗了大约 14 GB,这是一个快速的 SSD。
因为我想回收 C: 驱动器上的一些空间,所以我想将它们移动到我的 D: 驱动器。
我找到了这篇 MSDN 文章,但这似乎是只移动一个数据库的过程。
是否有自动方式或脚本一次移动我的所有数据库?
我有一个表,其中数据占用 200 GB 大小,其上的 6 个索引占用 180 GB 大小。它膨胀了 30%,所以我想回收它占用的不需要的空间。它聚集在job_id_idx 索引上。
那么要回收空间我需要使用cluster命令还是vacuum full命令?
这两个命令有什么区别?
是vacuum full为了通过一些列相同cluster的命令?
两个命令中是否都重新创建了索引?
在我的情况下,哪一个会更快?
PostgreSQL 数据库版本为 9.1
我有以下情况。我必须使用 MySQL 从描述中子字符串正则表达式。描述:
Lorem D9801 ipsum dolor 坐 amet
其中 D9801 是 REGEXP。每个强文本描述都有不同的内容,但我的正则表达式应该如下所示:REGEXP 'D[[:digit:]]{4}'
REGEXP 总是以“D”开头和“xxxx” - 4 位数字结尾:Dxxxx
我知道 REGEXP 只返回 true/false 值,但如何查询只返回“D9801”值?
我试过这样的事情:
SELECT SUBSTRING (description, LOCATE(REGEXP 'D[[:digit:]]{4}', description), 5)
FROM (
SELECT "Lorem D9801 ipsum dolor sit amet" AS description
) temp
Run Code Online (Sandbox Code Playgroud)
我知道这是错误的,所以我尝试这样做:
SELECT
id,
SUM(description REGEXP 'D[[:digit:]]{4}') AS matches,
CASE
WHEN (SUM(description REGEXP 'D[[:digit:]]{4}') > 0) THEN
SUBSTRING(description, LOCATE( /*POSITION_OF_REGEXP_IN_DESC*/ , description), 5)
ELSE 'Brak schematu'
END AS show_substr FROM ps_description GROUP BY id; …Run Code Online (Sandbox Code Playgroud) 我刚开始使用 Postgres,我正在尝试创建一个示例数据库来了解它的功能,环顾四周,我在 pgfoundry.org 中找到了一些脚本。我理解这些命令,因为我之前同时使用了 Oracle 和 MS-SQL,但是我运行的所有脚本在到达“COPY FROM”指令时都返回错误。更准确地说,错误是在应该插入给定表中的第一个元素处抛出。
我已经尝试将脚本作为查询和 pgScripts 运行,但是在这两种方式中,我在 COPY FROM 之后的第一行都收到错误。
我正在使用 pgAdminIII,我使用 StackBuilder 将 PostgreSQL 9.2.4.1 安装为 DB 驱动程序。我是否可能缺少一些阻止我运行此命令的基本配置,或者我只是不明白他们的工作方式?
编辑:
错误是:
ERROR: syntax error at or near "7"
LINE 5600: 7 4 13 37 2012-03-10 16:41:43.797787 2012-03-10 16:41:43.797...
^
********** Error **********
ERROR: syntax error at or near "7"
SQL status: 42601
Char: 140891`
Run Code Online (Sandbox Code Playgroud)
文字在哪里:
COPY action_abilitations (id, group_action_id, partecipation_role_id, group_id, created_at, updated_at) FROM stdin;
7 4 13 37 2012-03-10 16:41:43.797787 2012-03-10 16:41:43.797787`
Run Code Online (Sandbox Code Playgroud) postgresql ×5
mysql ×3
sql-server ×2
amazon-rds ×1
bulkcopy ×1
identity ×1
index ×1
join ×1
log ×1
performance ×1
pgadmin ×1
postgis ×1
primary-key ×1
vacuum ×1