我是 psql 的新手,需要一些帮助。如何将本地 CSV 加载到远程数据库?
我正在使用以下命令
\COPY test(user_id, product_id, value)
FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER;
Run Code Online (Sandbox Code Playgroud)
但这会在远程数据库上搜索文件,而我需要在本地 PC 上执行此操作。
如果我使用 pgsql 命令在文件中执行以下内容,它会抱怨需要使用“perform”调用该过程。但是当我尝试使用 perform 时,它告诉我未定义 perform 。解决办法是什么?
create or replace function waitris() returns void as
$$
declare
cnt integer;
begin
loop
select count(*) into cnt from taskflag where taskid = 'rdfdb' and state != 2;
if cnt = 0 then
exit;
end if;
select pg_sleep(1);
end loop;
end;
$$
language plpgsql;
select waitris();
Run Code Online (Sandbox Code Playgroud) Windows 7 64 位上的 PostgreSQL 9.2.2。
设置log_statement在postgresql.conf文件中指定的语句记录哪些(无,DDL,修改数据,或全部)。设置log_statement = 'all'会在多大程度上降低性能?我读过这会显着降低性能,但这些说法来自较旧的文章,那么相对于 ,我应该期望多少性能损失log_statement = 'none'?
有没有办法确定一个视图是否不再被使用(不删除它们)?
理想情况下,我想知道SQL Server 2000 和 2012的视图用法。
我正在升级一些数据库并怀疑许多视图不再被使用。此外,一些视图将难以在新服务器上编译,因为它们访问多个数据库,其中一些未移动到新服务器。
我正在使用 Mysql DB 在 php 中做一个学校管理系统。我被困在我的项目中。请任何人建议我做错了什么。
我的数据库中有两个表;一个是存储Students记录,另一个是attendance明智地存储他们的日常
现在我想显示当月特定班级所有学生的报告,无论他们在场还是缺席。但我只在出勤表中捕获缺席学生的详细信息。
我写了 sql 查询来显示这里的结果是:
SELECT tab.class, attend, DATE, ta.rollno, ta.StdNm
FROM tbl_absentees tab, tbl_admission ta
WHERE ta.Cls = class
AND ta.rollno = tab.rollno
AND class =22
AND attend = 'A'
AND DATE = '2013-06-07';
Run Code Online (Sandbox Code Playgroud)
结果是:
Class Attend RollNo StudentName
Run Code Online (Sandbox Code Playgroud)
但我想以 31 天的表格方式显示,如果出席=A 显示 A 表示缺席天数,否则显示“P”表示剩余天数
我怎样才能在mysql中做到这一点?任何人都可以建议/给我一个想法来实现这一目标。
对不起,我的问题有误。实际上,我想显示特定月份的出勤报告,其中数据来自两个表:
现在我想显示象报告这样。
还有另一种方法可以将函数声明为返回一个集合,即使用语法 RETURNS TABLE(columns)。... 这种表示法是在 SQL 标准的最新版本中指定的,因此可能比使用 SETOF 更具可移植性。
这听起来好像RETURNS TABLE是返回多行的更新、更便携的样式。但我不确定这两种语法是否等效。
我想知道我们是否真的可以RETURNS TABLE用来代替 RETURNS SETOF?
特别是,我还没有弄清楚的一种情况是:如果我们有一个现有的表foo及其关联的复合类型,我们如何在 中使用它RETURNS TABLE?
使用上述链接的示例,可以使用以下内容重写RETURNS TABLE:
CREATE TABLE foo (fooid int, foosubid int, fooname text);
CREATE FUNCTION getfoo(int) RETURNS SETOF foo AS $$
SELECT * FROM foo WHERE fooid = $1;
$$ LANGUAGE SQL;
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试使用RETURNS TABLE (foo.*)and RETURNS TABLE (foo),但没有用。
我知道 PostgreSQL 为并发控制提供了多种锁定模式。当我通读他们的文件时,我不明白为什么ACCESS EXCLUSIVE在任何情况下都需要锁。EXCLUSIVE锁和ACCESS EXCLUSIVE锁之间的唯一区别似乎是ACCESS EXCLUSIVE锁不允许从表中读取。
但是,人们能够阅读不是一件好事吗?在什么情况下应该阻止用户阅读?在文档中,我看到通常DROP TABLE等会使用ACCESS EXCLUSIVE锁,但为什么呢?我在想,也许当您删除表时,当您尝试读取时,数据已经部分消失,因此结果将被破坏。但是后来我意识到由于 Postgres 中的所有内容都是事务性的,DROP TABLE因此在提交之前不应该生效。所以我的猜测应该是错误的。
我还是很困惑。ACCESS EXCLUSIVE当您将它与EXCLUSIVE锁定进行比较时,为什么又需要锁定?我最好的猜测是用ACCESS EXCLUSIVE锁替换锁EXCLUSIVE不会破坏 PostgreSQL。只是有时人们不希望别人阅读。我错过了什么?
在 PostgreSQL 9.2 中,我可以轻松创建具有地理 (postGIS) 类型和整数作为复合索引的索引。但是现在(9.6)它抱怨创建索引,我不明白它提供的提示:
列和数据都已正确创建,Postgres 抱怨创建索引。
ERROR: data type integer has no default operator class for access method "gist"
HINT: You must specify an operator class for the index
or define a default operator class for the data type.
********** Error**********
ERROR: data type integer has no default operator class for access method "gist"
SQL state: 42704
Hint: You must specify an operator class for the index
or define a default operator class for the data type.
Run Code Online (Sandbox Code Playgroud)
模式定义如下: …
我正在写一个drop语句(在 phpMyAdmin 中)来删除我数据库中一些不需要的表。如果我对我们的实时数据库运行此查询,我将看不到完整的 drop 语句(它在 50 个字符后被截断)。如果我针对该数据库的副本运行它,则会返回完整的语句。
任何想法为什么行为会有所不同?
SET GROUP_CONCAT_MAX_LEN=10000;
SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' )
AS statement FROM information_schema.tables
WHERE table_schema = 'dbname' AND table_name LIKE 'prefix%';
Run Code Online (Sandbox Code Playgroud) 我已经在我的机器上将 Postgresql 从 9.3 升级到 9.6(linux mint rafaella-so ubuntu 14.04)
由于以前的版本在 5432 上侦听,新版本在 5433 上侦听,但我想将其更改为 5432,以便之前的配置(rails、phppgadmin 等)与新的 postgres 服务器一起使用。
我已将 postgresql.conf 中的端口从 5433 更改为 5432 并重新启动了 postgres,但这不起作用:
$ sudo netstat -nltp |grep 5432
$ sudo netstat -nltp | grep 5433
tcp 0 0 127.0.0.1:5433 0.0.0.0:* LISTEN 25467/postgres
Run Code Online (Sandbox Code Playgroud)
我还尝试设置环境变量并重新启动 postgres:
PGPORT=5432; export PGPORT
Run Code Online (Sandbox Code Playgroud)
再次,仍然在 5433 上收听,而在 5432 上什么也没有。
尝试连接给了我:
$ sudo -u postgres psql postgres
psql: could not connect to server: No such file or directory
Is the server running locally …Run Code Online (Sandbox Code Playgroud) postgresql ×7
mysql ×2
logs ×1
mvcc ×1
performance ×1
phpmyadmin ×1
pivot ×1
postgis ×1
sql-server ×1