小编Clo*_*eto的帖子

将csv文件的一些列复制到表中

我有一个包含10列的CSV文件.创建一个包含4列的PostgreSQL表后,我想将10列中的一些列复制到表中.

我的CSV表的列如下:

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
Run Code Online (Sandbox Code Playgroud)

我的PostgreSQL表的列应该是这样的:

x2 x5 x7 x10
Run Code Online (Sandbox Code Playgroud)

csv postgresql etl copy

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

Sqlite将字符串转换为日期

我将日期存储为sqlite数据库中的字符串,如"28/11/2010".我想将字符串转换为日期.

具体来说,我必须在两个日期之间转换大量的字符串日期.

在postgresql中,我使用to_date('30/11/2010','dd/MM/yyyy'),如何用sqlite做同样的事情?

像这样的东西:

SELECT * FROM table
    WHERE   to_date(column,'dd/MM/yyyy')
    BETWEEN to_date('01/11/2010','dd/MM/yyyy')
    AND     to_date('30/11/2010','dd/MM/yyyy')
Run Code Online (Sandbox Code Playgroud)

sqlite string date date-format

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

如何将PostgreSQL 9.4的jsonb类型转换为float

我正在尝试以下查询:

SELECT (json_data->'position'->'lat') + 1.0 AS lat FROM updates LIMIT 5;
Run Code Online (Sandbox Code Playgroud)

(+ 1.0只是强制转换为浮点数.我的实际查询要复杂得多,这个查询只是问题的一个测试用例.)

我收到错误:

ERROR:  operator does not exist: jsonb + numeric
Run Code Online (Sandbox Code Playgroud)

如果我添加显式转换:

SELECT (json_data->'position'->'lat')::float + 1.0 AS lat FROM updates LIMIT 5;
Run Code Online (Sandbox Code Playgroud)

错误变成:

ERROR:  operator does not exist: jsonb + double precesion
Run Code Online (Sandbox Code Playgroud)

我知道大多数jsonb值都不能转换成浮点数,但在这种情况下我知道lats都是JSON数.

是否有一个函数将jsonb值转换为浮点数(或为uncastable返回NULL)?

sql postgresql casting jsonb postgresql-9.4

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

截断表后,序列不会重置

截断表后,我使用SELECT lastval()来获取错误的序列ID.

当我截断表时,我使用SELECT lastval(),我得到了错误的ID /

postgresql sequence

27
推荐指数
5
解决办法
2万
查看次数

使用Psycopg2插入Python Dictionary

将带有许多键的python字典插入Postgres数据库而不必枚举所有键的最佳方法是什么?

我想做点什么......

song = dict()
song['title'] = 'song 1'
song['artist'] = 'artist 1'
...

cursor.execute('INSERT INTO song_table (song.keys()) VALUES (song)')
Run Code Online (Sandbox Code Playgroud)

python postgresql psycopg2

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

SQL Server相当于PostgreSQL上的()

我想有一个与PostgreSQL等效的Sql Server distinct on ()

a  b
----
1  1
1  2
2  2
2  1
3  3

select distinct on (a) * 
from my_table

a  b
----
1  1
2  2
3  3
Run Code Online (Sandbox Code Playgroud)

我可以在SQL Server中做:

select a, min(b) -- or max it does not matter
from my_table
group by a
Run Code Online (Sandbox Code Playgroud)

但是在有很多列并且查询是临时查询的情况下,这样做非常繁琐.有一个简单的方法吗?

sql sql-server sql-server-2008

22
推荐指数
2
解决办法
7984
查看次数

为什么'2'>'10'?

为什么'2' 的初始空间大于'10'?

select ' 2' > '10';
 ?column? 
----------
 t
(1 row)
Run Code Online (Sandbox Code Playgroud)

我尝试了latin1和utf8英文整理:

                                    List of databases
   Name    |   Owner    | Encoding  |    Collation     |      Ctype       |   Access privileges   
-----------+------------+-----------+------------------+------------------+-----------------------
 cpn       | cpn        | UTF8      | en_US.UTF-8      | en_US.UTF-8      | 
 teste     | cpn        | LATIN1    | en_US.ISO-8859-1 | en_US.ISO-8859-1 | 
Run Code Online (Sandbox Code Playgroud)

我知道它与类型有关,因为当它被转换时它按预期工作:

teste=> select ' 2'::char > '10';
 ?column? 
----------
 f
(1 row)
Run Code Online (Sandbox Code Playgroud)

到底发生了什么?

编辑:

以上所有内容都是在Fedora 13中用8.4.8完成的.但是我在Centos 6中测试了9.04并得到了相同的结果:

select ' 2' > '10';
 ?column? 
----------
 t
(1 row)
Run Code Online (Sandbox Code Playgroud)

数据库列表

   Name    | …
Run Code Online (Sandbox Code Playgroud)

sql postgresql collation

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

Postgresql前缀通配符为全文

我正在尝试使用Postgresql运行全文查询,该查询可以使用通配符来满足部分匹配.

在搜索词后面有一个后缀通配符似乎很容易,但我无法弄清楚如何指定前缀通配符.

例如,我可以使用类似的东西轻松地执行后缀搜索.

SELECT "t1".* 
FROM "t1" 
WHERE (to_tsvector('simple', "t1"."city") @@ to_tsquery('simple', 'don:*') )
Run Code Online (Sandbox Code Playgroud)

应该返回匹配"伦敦"的结果

但是,我似乎不能像...那样做前缀搜索

SELECT "t1".* 
FROM "t1" 
WHERE (to_tsvector('simple', "t1"."city") @@ to_tsquery('simple', ':*don') )
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望在搜索词的前端和末尾添加一个通配符,例如......

SELECT "t1".* 
FROM "t1" 
WHERE (to_tsvector('simple', "t1"."city") @@ to_tsquery('simple', ':*don:*') )
Run Code Online (Sandbox Code Playgroud)

我可以使用LIKE条件但是我希望能从Postgres中的全文搜索功能中受益.

sql postgresql full-text-search full-text-indexing

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

SQL Server 2008 r2或PostgreSQL

我正在为我的公司重写一个需要数据库的应用程序.我们目前正在使用SQL Server 8,我将更新数据库.我的问题是使用哪个数据库.我一直在寻找SQL Server 2008 r2和PostgreSQL 9.

该数据库将托管在Windows Server 2008框中,并将用于独立应用程序和用.NET编写的关联网站.

我的一些关注点是:

  1. 成本(显然PostgreSQL在这里胜出).
  2. 黄金时间准备好了吗?我已经读过一些关于它和SQL一样好的东西,但是想要那些使用它的人的一些输入.
  3. 便于使用.我对SQL Server很满意.我一直在试验PostgreSQL,虽然它与SQL Server不同,但我得到了它的支持.
  4. 速度.PostgreSQL和SQL Server一样快吗?
  5. 我可以将ADO.NET(.NET 4.0)与PostgreSQL一起使用,并获得与使用SQL Server(将使用Linq或实体框架)相同的功能吗?

我不会将SQL Server 8中的旧数据库转换为新数据库,因此我不关心任何转换.

我会对两者的人们的意见感兴趣,如果给出上述内容,PostgreSQL是一个可接受的商业应用解决方案.

TIA

布赖恩

sql sql-server postgresql

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

使用psycopg2将列名作为参数传递给PostgreSQL

我正在尝试使用添加列到表 psycopg2

row1下面是要添加到表中的列名列表.我可以手动完成,但当我尝试以编程方式执行此操作时,我收到错误.

for c in row1:
    cur.execute("ALTER TABLE HHV2PUB ADD COLUMN %s text", (c,))
Run Code Online (Sandbox Code Playgroud)

错误是:

    cur.execute("ALTER TABLE HHV2PUB ADD COLUMN %s text", (c,))
psycopg2.ProgrammingError: syntax error at or near "'HOUSEID'"
LINE 1: ALTER TABLE HHV2PUB ADD COLUMN 'HOUSEID' text
Run Code Online (Sandbox Code Playgroud)

我的猜测是它与单引号有关 ''

python sql postgresql parameters psycopg2

16
推荐指数
2
解决办法
6071
查看次数