小编Nic*_*nes的帖子

在 Postgres 中,如何在 COPY TO 命令中保留换行符?

我的表的一列包含带有“\n”的字符串。

postgres=# select * from stringtest ;

 id |    inputstr

----+-----------------

  1 | Name : NOC\r   +

    | \r             +

    | Detail : Detail

(1 row)
Run Code Online (Sandbox Code Playgroud)

但是当我使用 COPY TO 检索同一个表时,新行字符被转义

postgres=# COPY (select * from stringtest) TO STDOUT WITH DELIMITER E'\t' ;

1       Name : NOC\r\n\r\nDetail : Detail
Run Code Online (Sandbox Code Playgroud)

如何使 COPY TO 命令用新行替换 '\n' ?

预期输出:

postgres=# COPY (select * from stringtest) TO STDOUT WITH DELIMITER E'\t' ;

1       Name : NOC\r
        \r
        Detail : Detail
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?

postgresql

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

用户postgres的Psycopg2对等身份验证

我似乎已经正确安装了PostgreSQL 9.5.5.和Usntu 16.04上的Psycopg2,可以通过以下方式登录:

sudo -u postgres psql
Run Code Online (Sandbox Code Playgroud)

如果我然后发出\conninfo,我得到以下内容:

You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
Run Code Online (Sandbox Code Playgroud)

当然我应该能够通过psycopg2以与此处所示相同的方式连接,但脚本:

#!/usr/bin/python
import psycopg2
conn = psycopg2.connect("dbname=postgres user=postgres") 
conn.close()
Run Code Online (Sandbox Code Playgroud)

给我:

psycopg2.OperationalError: FATAL:  Peer authentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

我只想要PostgreSQL供个人使用,所以我不想启用TCP身份验证.

如何在Psycopg2中使用用户"postgres"正确使用对等身份验证?

python postgresql psycopg2 ubuntu-16.04

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

Postgresql COPY编码,怎么样?

我正在导入包含imdb信息的.txt文件(例如moviename,movieid,actors,director,rating votes等)我使用COPY语句导入它.我使用的是Ubuntu 64位.问题是,有些演员有不同的名字,比如JonasÅkerlund.这就是postgresql抛出错误的原因:

错误:列"演员"的数据缺失背景:复制电影,第3060行:"tt0283003 Spun 2002 6.8 30801 101分钟.JonasÃ"**********错误**********

错误:列"actor"缺少数据SQL状态:22P04上下文:COPY电影,第3060行:"tt0283003 Spun 2002 6.8 30801 101分钟.JonasÃ"

我的副本声明如下:

COPY movie FROM '/home/max/Schreibtisch/imdb_top100t.txt' (DELIMITER E'\t', FORMAT CSV, NULL '');
Run Code Online (Sandbox Code Playgroud)

我不知道如何使用整理声明.请问你能帮帮我吗?一如既往,谢谢.

postgresql collation

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

最合适的排序算法

我必须排序大量100000的双倍数量.

关键是我不想对整个数组进行排序,而只是按降序查找最大的20000个元素.

目前我正在使用选择排序.有什么方法可以改善性能?

sorting algorithm

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

在PostgreSQL中,有关citext性能的奇怪问题?

PostgreSQL手册中,它说它citext只是一个TEXT通过调用实现数据类型的模块LOWER():

citext模块提供不区分大小写的字符串类型citext.从本质上讲,它在比较值时内部调用较低.否则,它的行为几乎与文本完全相同.

另一方面,在文件结束时,它说:

citext不如文本有效,因为运算符函数和B树比较函数必须复制数据并将其转换为小写以进行比较.但是,使用lower来获得不区分大小写的匹配稍微有效一点.

所以我很困惑,如果它使用它LOWER()怎么能"比使用更低的效率略高"?

sql postgresql

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