我有一个包含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) 我将日期存储为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) 我正在尝试以下查询:
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)?
截断表后,我使用SELECT lastval()来获取错误的序列ID.
当我截断表时,我使用SELECT lastval(),我得到了错误的ID /
将带有许多键的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) 我想有一个与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)
但是在有很多列并且查询是临时查询的情况下,这样做非常繁琐.有一个简单的方法吗?
为什么'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) 我正在尝试使用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 Server 8,我将更新数据库.我的问题是使用哪个数据库.我一直在寻找SQL Server 2008 r2和PostgreSQL 9.
该数据库将托管在Windows Server 2008框中,并将用于独立应用程序和用.NET编写的关联网站.
我的一些关注点是:
我不会将SQL Server 8中的旧数据库转换为新数据库,因此我不关心任何转换.
我会对两者的人们的意见感兴趣,如果给出上述内容,PostgreSQL是一个可接受的商业应用解决方案.
TIA
布赖恩
我正在尝试使用添加列到表 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)
我的猜测是它与单引号有关 ''
postgresql ×8
sql ×6
psycopg2 ×2
python ×2
sql-server ×2
casting ×1
collation ×1
copy ×1
csv ×1
date ×1
date-format ×1
etl ×1
jsonb ×1
parameters ×1
sequence ×1
sqlite ×1
string ×1