问题标签 [postgresql-copy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2449 浏览

postgresql - 在 postgresql 中使用复制时如何忽略重复键

我正在使用 COPY table_name FROM STDIN 导入数据。这是非常有效的,但如果有任何重复密钥的违反,整个过程将被停止。有什么办法解决这个问题吗?

为什么 postgresql 不只是发出警告并复制其余数据?

这是示例:

这里“名称”字段具有唯一约束。由于字符串“abc”已经存在于表中。它忽略了整个过程。

0 投票
1 回答
5599 浏览

sql - 如何将 PostgreSQL 输出保存到文本文件

我一直在为其他 StackOverflow 响应而苦苦挣扎。我想将查询的输出保存到本地文本文件 - 只要文本文件在我的本地机器上,它的位置并不重要。

我正在使用的代码:

此代码的错误是:

0 投票
2 回答
14557 浏览

postgresql - 如何从 CSV 为 PostgreSQL 副本生成模式

给定一个包含几十列或更多列的 CSV,如何创建可用于 PostgreSQL 中的 CREATE TABLE SQL 表达式以与 COPY 工具一起使用的“模式”?

我看到了很多关于 COPY 工具的示例和基本的 CREATE TABLE 表达式,但是没有详细说明当您有可能禁止手动创建模式的列数时的情况。

0 投票
1 回答
174 浏览

mysql - 当值为 '2"%' 时在 postgresql 中使用复制时出错

我有一个表,其中包含 300,000 行不受我控制,我需要导入。

我使用以下命令从 mysql 导出数据:

然后我尝试使用例如导入每个表:

这适用于大多数表,也适用于包含 450,000 行的表。但在一个我得到这个错误:

当我检查COUV_MOUSSES第 190'310 行中的字段时,它包含以下值:2"%.

我必须改变什么才能让它工作?

为了"2""%"根据@klin(谢谢!)获得正确的输出,我必须添加--fields-escaped-by='"'到 mysqldump 命令。这样就变成了:

问题是:现在 Null 值导出为"N.

好吧,没问题,我想了想,把复制命令改成:

这会在 Postgres 中产生以下错误:

而且似乎在 MySQL 中不能更改 Null 值的表示。

0 投票
1 回答
96 浏览

postgresql - 将csv文件填充到sql中

我尝试运行相同的命令。我将人口 csv 移至我的文档文件夹。

这是我得到的结果。

0 投票
0 回答
858 浏览

database - 从带有中文字符的txt文件中复制表 - Windows上的Postgresql

我正在尝试使用 PostgreSQL 中的 \copy 命令从包含中文字符的 txt 文件中加载表。我有一个测试表,其中只有一列 Names Varchar(25)。当我从 PSQL 或 PgAdmin 运行插入语句时

insert into test values ('康狀態概');

它可以正常工作并正确插入值。当我将相同的值放入 txt 文件(比如 text.txt)并尝试使用复制命令并加载 test.txt 的内容时

\copy test from 'D:/database/test.dat';

它仅在 Windows 上引发错误ERROR: character with byte sequence 0xa6 0x82 in encoding "GBK" has no equivalent in encoding "UTF8"。我将 Windows 服务器的语言环境和键盘设置更改为中文,但无论是否更改语言环境设置,它都不起作用。

相同的练习在 Linux 上运行良好,无需任何更改。

有人可以建议这里需要做什么吗?

谢谢

0 投票
2 回答
803 浏览

python - 替代“写入文件”以使用 COPY 将 CSV 数据传输到 PostgreSQL 以获得更好的性能?

我有一个包含 2500 行的 CSV 文件中的数据集。该文件的结构(简化)方式:

id_run; run_name; receptor1; receptor2; receptor3_value; [...]; receptor50_value

文件的每个接收器都已经在一个表中并且具有唯一的 ID。

我需要将每一行上传到具有这种格式的表中:

实际上,我正在将需要上传的所有数据写入 .txt 文件中,并且我正在使用 postgreSQL 中的 COPY 命令将文件传输到目标表。

对于 2500 次运行(因此 CSV 文件中有 2500 行)和 50 个受体,我的 Python 程序在要上传的文本文件中生成约 110000 条记录。

我正在删除目标表的外键并在上传后恢复它们。

使用这种方法,生成文本文件实际上需要大约 8 秒,将文件复制到表中需要 1 秒。

有没有一种方法、方法、库或其他任何我可以用来加速准备上传数据的方法、方法、库或其他任何东西,以便 90% 的时间不是用于编写文本文件?

编辑:

这是我的(更新的)代码。我现在正在使用批量写入文本文件。它看起来更快(在 3.8 秒内上传了 110 000 行)。

编辑#2

使用 cStringIO 库,我用类似文件的对象替换了临时文本文件的创建,但速度增益非常非常小。

代码更改:

0 投票
3 回答
884 浏览

sql - 从命令行处理 COPY 到 CSV 中的引号

我正在尝试从命令外壳运行此 COPY 查询:

我知道您可以使用 psql 从命令行运行查询:

但是我怎样才能将两者结合起来呢?以下似乎不起作用,但我不确定如何/是否需要逃脱。

0 投票
1 回答
23 浏览

sql - 使用链接/参考 ID 复制 postgres 数据库

试图提取数据库表的 csv

使用... COPY sale_order TO '/tmp/salesorder.csv' DELIMITER ',' CSV HEADER;

我明白了。。

  • id - partner_id
  • 1 - 45
  • 2 - 55

“partner_id”引用另一个表“contacts”作为id,我想要“name”

我可以参考 partner_id 来输出吗

  • 身份证 - 姓名
  • 1-弗雷德博客
  • 2 -约翰·史密斯
0 投票
1 回答
2040 浏览

sql - 将数字字段中带逗号的数据导入红移

我正在使用 SQLCOPY语句将数据导入 redshift。COPY数据在语句拒绝的数字字段中具有逗号千位分隔符。

COPY语句有许多选项来指定字段分隔符、日期和时间格式以及 NULL 值。但是我没有看到任何指定数字格式的内容。

我是否需要在加载之前对数据进行预处理,或者有没有办法让红移来正确解析数字?