我必须为现有表添加唯一约束.这很好,除了表已经有数百万行,并且许多行违反了我需要添加的唯一约束.
删除有问题的行的最快方法是什么?我有一个SQL语句,它找到重复项并删除它们,但它需要永远运行.有没有其他方法可以解决这个问题?也许备份表,然后在添加约束后恢复?
sql postgresql duplicate-removal unique-constraint sql-delete
我需要从PG数据库中删除大约200万行.我有一个我需要删除的ID列表.但是,我尝试这样做的任何方式都需要几天时间.
我尝试将它们放在一个表中,并在100个批次中进行.4天后,这仍然在运行,只删除了297268行.(我必须从ID表中选择100个id,删除该列表中的IN,从ids表中删除我选择的100个).
我试过了:
DELETE FROM tbl WHERE id IN (select * from ids)
Run Code Online (Sandbox Code Playgroud)
那也是永远的.很难判断多久,因为我看不到它的进展直到完成,但查询仍然在2天后运行.
当我知道要删除的特定ID时,只需要寻找从表中删除的最有效方法,并且有数百万个ID.
使用PostgreSQL数据库运行1个项目NodeJ时遇到问题.尝试使用COPY命令在pgAdmin中插入数据时出错.
COPY beer (name, tags, alcohol, brewery, id, brewery_id, image) FROM stdin;
Bons Voeux blonde 9.5 Brasserie Dupont 250 130 generic.png
Run Code Online (Sandbox Code Playgroud)
这个数据在 要点:
这个错误:
ERROR: syntax error at or near "Bons"
SQL state: 42601
Character: 1967
Run Code Online (Sandbox Code Playgroud)
我需要将结果数据从PostgreSQL中的查询导出到Excel/CSV.
我用PostgreSQL 8.2.11.
SQL error:
ERROR: relative path not allowed for COPY to file
In statement:
COPY (select distinct(m_price) from m_product)TO '"c:\auto_new.txt"';
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用COPY将CSV文件导入PostgreSQL.当它遇到有空值的行时会窒息,例如下面的第二行:
JAN-01-2001,1,2,3,4,5
JAN-02-2001,6,7 ,,,
我已经尝试过这个COPY语句,以及使用NULL和QUOTE的变体,并没有发现任何有用的东西.
COPY数据来自'data.dat'使用DELIMITERS','CSV;
有什么建议?数据文件是一个庞大的22GB平面文件,所以我想避免直接编辑它.
我正在尝试将CSV中的数据导入到表中.问题在于,即使使用CSV HEADER,也会根据列索引导入CSV,而不是在该列的标题上导入.
CREATE TABLE denominations (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
CREATE TABLE churches (
id SERIAL PRIMARY KEY,
-- NOT relevant here
address_id INTEGER REFERENCES addresses,
denomination_id INTEGER NOT NULL REFERENCES denominations,
name VARCHAR(100) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
我的CSV看起来像:
id,name
1,Southern Baptist Convention
2,Nondenominational
3,Catholic
4,Presbyterian
id,denomination_id,name,address_id
1,1,Saddleback Church,
2,4,First Presbyterian Church,
3,3,St. Elizabeth's Church,
4,3,St Monica Catholic Community,
5,2,Modern Day Saints Church,
6,4,Second Presbyterian Church,
Run Code Online (Sandbox Code Playgroud)
我的COPY命令在bash中看起来像这样:
psql -d vacation -c "COPY denominations FROM …Run Code Online (Sandbox Code Playgroud) 我正在使用psqlPostgreSQL数据库和以下copy命令:
\COPY isa (np1, np2, sentence) FROM 'c:\Downloads\isa.txt' WITH DELIMITER '|'
Run Code Online (Sandbox Code Playgroud)
我明白了:
ERROR: extra data after last expected column
Run Code Online (Sandbox Code Playgroud)
如何跳过有错误的行?
完整的 PostgreSQL newb。
我在 db1 中有 7-8 个数据视图,我需要将它们复制到不同数据库 db2 中具有匹配模式(模式?)的表中。目标数据库可能是 PostgreSQL 的同一个实例,也可能是完全不同的一个实例。
我知道使用我熟悉的数据库有 2-3 种不同的方法来实现这一点,但我对这个无能为力。有人可以为我建议一些基本策略吗?
在一个完美的世界中,我宁愿不必做任何感觉太 ETL 的事情——我宁愿做某种
SELECT FROM instance1.db1.viewname INTO instance2.db5.tablename
Run Code Online (Sandbox Code Playgroud)
然后将数据作为文本文件从视图中转储出来并重新加载到目标表中。
因为我不了解 PostgreSQL,所以我真的不知道什么是可能的。
在现有的 PostgreSQL 表中,我想要UPDATE几个现有列的值来自字典查找(请参阅下面的字典)。有点像这篇不错的博客文章中描述的那样。但是,我不知道如何使用 Python 字典来做到这一点。可怕的伪代码来了:
d = {10:'chair', 11:'table', 12:'lamp',
20:'english ivy', 21:'peace lily', 22:'spider plant'}
curs.execute("""
UPDATE my_table t
SET furniture = %(t.furniture)s,
SET plant = %(t.plant)s""",
d)
Run Code Online (Sandbox Code Playgroud)
在最初的表看起来有点像这样:
gid | furniture | plant
-----------------------
0 | 10 | 21
1 | 11 | 20
...
Run Code Online (Sandbox Code Playgroud)
之后的操作就应该是这样的:
gid | furniture | plant
-----------------------------
0 | chair | peace lily
1 | table | english ivy
...
Run Code Online (Sandbox Code Playgroud)
这是可能的还是我必须遍历表格?
我正在尝试检查一个值是否为null,如果是这样,select null否则转换为数字,但它会引发错误.这实际上是insert语句的一部分
INSERT into someTable(name,created,power)
SELECT 'xyz',now(),
case when :power ='null' then NULL else cast(:power as numeric) end from abc
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
Error: ERROR: invalid input syntax for type numeric: "null"
Run Code Online (Sandbox Code Playgroud)
:power是一个变量,可以使用java代码赋予任何值.如果我给出null值,则会给出错误.
在代码中,我从java堆栈跟踪中得到以下错误
org.postgresql.util.PSQLException: ERROR: cannot cast type bytea to numeric
Run Code Online (Sandbox Code Playgroud) postgresql ×10
csv ×2
sql ×2
sql-delete ×2
bigdata ×1
bulk-load ×1
copy ×1
dictionary ×1
etl ×1
file-io ×1
pgadmin ×1
psql ×1
psycopg2 ×1
python ×1
replication ×1