相关疑难解决方法(0)

如何删除重复的条目?

我必须为现有表添加唯一约束.这很好,除了表已经有数百万行,并且许多行违反了我需要添加的唯一约束.

删除有问题的行的最快方法是什么?我有一个SQL语句,它找到重复项并删除它们,但它需要永远运行.有没有其他方法可以解决这个问题?也许备份表,然后在添加约束后恢复?

sql postgresql duplicate-removal unique-constraint sql-delete

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

按ID删除数百万行的最佳方法

我需要从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.

sql postgresql bigdata postgresql-performance sql-delete

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

在PostgreSQL中,如何使用COPY命令插入数据?

使用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)

我是这样创建数据库并执行文件.sql:

postgresql bulk-load pgadmin postgresql-copy

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

PostgreSQL:将结果数据从SQL查询导出到Excel/CSV

我需要将结果数据从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)

postgresql file-io postgresql-copy

22
推荐指数
3
解决办法
10万
查看次数

CSV中的PostgreSQL副本,缺少数据值

我正在尝试使用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 postgresql copy

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

来自/ import的Postgres CSV COPY不符合CSV标题

我正在尝试将CS​​V中的数据导入到表中.问题在于,即使使用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)

csv postgresql

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

如何使用psql\copy meta-command忽略错误

我正在使用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 error-handling psql postgresql-copy

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

将结果从一个数据库中的 PostgreSQL 视图复制到另一个数据库中的表

完整的 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 replication etl

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

从 Python dict 批量更新 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)

这是可能的还是我必须遍历表格?

python postgresql dictionary psycopg2

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

postgres检查是否为null然后转换为数字

我正在尝试检查一个值是否为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

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