我将从数据库迁移。image
我想将一列类型导出到文件系统上的二进制文件。每条记录一个文件。如何使用 SQL Server 执行此操作?
Jonas's questions
我正在使用 Toad 针对 Oracle 数据库编写查询。当我写作时,table_name.
我会得到一个包含所有列名的自动建议菜单。但是如果我选择一个列名,表名和列名都是大写的。有没有办法把它改成小写字母?
在View > Formatting Option > Case
“标识符”中设置为Lowercase
我已经在我的 Windows 机器上安装了 PostgreSQL 用于开发。现在我已经有一段时间没有使用它了,并且忘记了用户的密码postgres
(PostgreSQL 中的默认管理员用户)。如何postgres
在 Windows 上重置 PostgreSQL 的密码?
我遵循 Milen 的建议,但在尝试重新加载配置文件时收到此消息:
C:\Program Files\PostgreSQL\9.1\data>pg_ctl reload -D .
pg_ctl: could not send reload signal (PID: 3396): Operation not permitted
在 Windows 中,有一个菜单选项“重新加载配置”效果更好,如下所示:
我正在尝试在 Ubuntu 机器上设置 PostgreSQL 数据库。我希望能够从远程机器上使用 pgAdmin3 访问它。我该如何设置?
我在 Ubuntu 上安装了 PostgreSQL 数据库,使用:
sudo apt-get install postgresql
在我/etc/postgresql/9.1/main/pg_hba.conf
有我这一行:
host all all all password
所以它应该接受来自所有 IPv4 地址的连接,并且密码应该以明文形式发送(这是出于开发原因)。
如果我运行此命令以查看正在运行的服务:
sudo netstat -tulpn
我可以看到这些行,这表明 PostgreSQL 正在接受默认端口上的连接:
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
3561/postgres
当我尝试从同一本地网络上的远程计算机连接到此 PostgreSQL 服务器时,我收到以下错误消息:
服务器不听
服务器不接受连接:连接库报告
无法连接到服务器:连接被拒绝 服务器是否在主机“10.0.1.7”上运行并接受端口 5432 上的 TCP/IP 连接?
我用postgres
作用户名,没有密码。但我也尝试过使用postgres
密码。在本地服务器上,我可以使用以下方式登录:
sudo -u postgres psql postgres
如何使用 pgAdmin3 从远程计算机连接到在 Ubuntu 上运行的 PostgreSQL 数据库?
我有一张桌子:
CREATE TABLE mytable (id SERIAL, name VARCHAR(10) PRIMARY KEY)
现在我想将名称添加到该表中,但前提是它们已经不存在于表中,并且在这两种情况下都返回id
. 我怎样才能用 PostgreSQL 做到这一点?
我已经看到了一些脚本,但是没有单一的 SQL 语句可以做到这一点吗?
例如,我可以插入并返回id
:
INSERT INTO mytable (name) VALUES ('Jonas') RETURNING id
它第一次工作并返回id
。但是如果表中已经存在它会失败,但是即使插入失败Jonas
,我也想返回。id
这可能与PostgreSQL有关吗?
我需要使用 PostgreSQL 将 Double Precision 的值转换为 Bigint。我怎样才能做到这一点?
我试过了,to_bigint(myvalue)
但那个功能不存在。
我有一张桌子:
CREATE TABLE names (id serial, name varchar(20))
我想要该表中的“最后插入的 id”,而不使用RETURNING id
插入。似乎有一个功能CURRVAL()
,但我不明白如何使用它。
我尝试过:
SELECT CURRVAL() AS id FROM names_id_seq
SELECT CURRVAL('names_id_seq')
SELECT CURRVAL('names_id_seq'::regclass)
但它们都不起作用。如何使用currval()
获取最后插入的 id?
如果我有一个包含列的表:
id | name | created_date
并想添加一列,我使用:
alter table my_table add column email varchar(255)
然后在该列之后添加该created_date
列。
有什么办法可以指定新列的位置吗?例如,我可以在之后添加它name
并获得如下表格:
id | name | email | created_date
我想针对我的 PostgreSQL 数据库对一些 SQL 查询进行基准测试。有什么方法可以让我使用 SQL 查询来计时psql
?
我想将 IP 地址插入类型为 的列中inet
。我可以以什么格式插入数据?它只是二进制文件还是有什么方法可以从文本中插入,例如"192.168.1.082"
?是否有任何帮助功能,以便我可以psql
在命令提示符下对其进行测试?
我使用One click installer在一台装有 Mac OS X 的计算机上安装了 PostgreSQL 。然后我尝试使用该psql
命令访问 PostgreSQL,但它似乎不可用。
我收到这条消息:
psql
-bash: psql: command not found
我还需要安装更多东西吗?或者如何配置 PostgreSQL,以便在我的计算机上使用它?
我有一张桌子items (item_id serial, name varchar(10), item_group int)
和一张桌子items_ver (id serial, item_id int, name varchar(10), item_group int)
。
items_ver
现在我想在from中插入一行items
。是否有任何简短的 SQL 语法来执行此操作?
我尝试过:
INSERT INTO items_ver VALUES (SELECT * FROM items WHERE item_id = 2);
但我得到一个语法错误:
ERROR: syntax error at or near "select"
LINE 1: INSERT INTO items_ver VALUES (SELECT * FROM items WHERE item...
我现在尝试:
INSERT INTO items_ver SELECT * FROM items WHERE item_id = 2;
它工作得更好,但我得到了一个错误:
ERROR: column "item_group" is of type integer but expression is of type
character varying
LINE 1: INSERT INTO items_ver SELECT * FROM items WHERE item_id = 2;
这可能是因为列在表中的定义顺序不同。列顺序重要吗?我希望 PostgreSQL 匹配列名。
我在 PostgreSQL 中有一个表,其中一列“vat”具有类型money
,但我想将其更改为decimal
。
我该怎么做?
我试过:
alter table my_table alter column vat type decimal;
但我得到这个错误:
ERROR: column "vat" cannot be cast to type numeric
有什么建议么?
如果没有返回行,我想为应该使用的列使用默认值。这在 PostgreSQL 中可能吗?我该怎么做?或者有没有其他方法可以解决这个问题?
例如这样的:
SELECT MAX(post_id) AS max_id DEFAULT 0 FROM my_table WHERE org_id = 3
如果org_id = 3
表中没有我想返回的行0
。
Unix 时间戳是自 1970 年 1 月 1 日午夜 UTC 以来的秒数。
如何从 PostgreSQL 获取正确的 unix 时间戳?
与currenttimestamp.com和timestamp.1e5b.de进行比较时,我没有从 PostgreSQL 获得预期时间:
这将返回正确的时间戳:
SELECT extract(epoch from now());
虽然这不是:
SELECT extract(epoch from now() at time zone 'utc');
我住在 UTC +02 时区。从 PostgreSQL 获取当前 unix 时间戳的正确方法是什么?
这将返回正确的时间和时区:
SELECT now();
now
-------------------------------
2011-05-18 10:34:10.820464+02
另一个比较:
select now(),
extract(epoch from now()),
extract(epoch from now() at time zone 'utc');
now | date_part | date_part
-------------------------------+------------------+------------------
2011-05-18 10:38:16.439332+02 | 1305707896.43933 | 1305700696.43933
(1 row)
Unix timestamp from the web sites:
1305707967
我timestamp without time zone default now()
在 PostgreSQL 数据库中有一个类型为“created”的列。
如果我选择列,默认情况下它具有良好且可读的格式:
SELECT created FROM mytable;
created
---------------------------
2011-05-17 10:40:28.876944
但我想在几毫秒内得到时间戳(作为一个长)。像这样的东西:
从我的表中选择我的格式(创建);
created
-----------------
2432432343876944
如何在几毫秒内从 PostgreSQL 获取时间戳列?
对杰克的回应:
我确实得到了与您相同的差异(-3600),但是如果我使用,timestamp with time zone
我可以看到“错误”或差异是因为 '1970-01-01' 获取 time zone +01
。
create table my_table_2(created timestamp with time zone);
CREATE TABLE
insert into my_table_2 (created) values (now()), ('1970-01-01');
INSERT 0 2
select created, extract(epoch from created) from my_table_2;
created | date_part
-------------------------------+------------------
2011-05-18 11:03:16.909338+02 | 1305709396.90934
1970-01-01 00:00:00+01 | -3600
(2 rows)
差异是错误吗?我现在可能是因为“夏令时”?
to_timestamp()
用于插入时间戳 0 和 1 时也很有趣。
insert into my_table_2 (created) values (to_timestamp(0));
INSERT 0 1
insert into my_table_2 (created) values (to_timestamp(1));
INSERT 0 1
select created, extract(epoch from created) from my_table_2;
created | date_part
-------------------------------+------------------
2011-05-18 11:03:16.909338+02 | 1305709396.90934
1970-01-01 00:00:00+01 | -3600
1970-01-01 01:00:00+01 | 0
1970-01-01 01:00:01+01 | 1
我正在使用 Ubuntu Server 10.10,并且我已经使用apt-get install postgresql
. 我想使用内置sha1()
功能,但似乎必须先安装pgcrypto
。但我不知道如何安装它。
如果pgcrypto
我尝试使用安装它apt-get install pgcrypto
并且在我的系统中找不到任何以开头的文件pgcrypto
(我试过find / -name "pgcrypto*"
),则没有。
如何安装 pgcrypto 以便digest('word-to-hash','sha1')
在我的数据库查询中使用该函数?
更新:我正在努力在另一台 Ubuntu 机器上安装 pgcrypto。使用安装软件包后,sudo apt-get install postgresql-contrib-8.4
如何将其安装到我当前的 PostgreSQL 数据库?
我正在尝试学习 PostgreSQL 管理并开始学习如何使用psql
命令行工具。
当我使用 登录时psql --username=postgres
,如何列出所有数据库和表?
我试过了\d
,d
但dS+
没有列出任何内容。我已经使用 pgAdmin III 创建了两个数据库和一些表,所以我知道它们应该被列出。
我已经开始学习 pgAdmin III 来管理 PostgreSQL 数据库。但这不是一个易于使用的应用程序。
如果我使用 pgAdmin III 创建或创建了一个表,我如何在具有整数类型的列 id 上添加“自动增量”功能?
我正在通过 JDBC 使用 Apache Derby/JavaDB 数据库。之前我一直在使用 MySQL 并使用 phpMyAdmin 作为一个很好的数据库管理工具。
有什么好的桌面应用程序可以通过 JDBC 管理数据库吗?