gpt4 book ai didi

sql - 如何将自定义枚举类型的数据从 csv 插入到现有的 PostgreSQL 表中

转载 作者:行者123 更新时间:2023-11-29 12:16:21 26 4
gpt4 key购买 nike

我想将 csv 文件中的数据插入到 PostgreSQL 数据库中的现有表中 - 我们将该表命名为 automobile

我的领域之一是自定义 enum - 我们称它为 brand

当我尝试使用 DataGrip 内置功能从 csv 文件导入记录时,我收到一条错误消息:

conversion failed: "Ford" to brand

但在下面的屏幕截图中,我们可以看到 manufacturer 列填充了预期的字符串值:Ford

我想我必须明确地将字符串转换为 brand 类型,但我该怎么做呢?我在导入选项中没有看到任何此类选项。 (见下文)。我应该直接在 csv 文件中做吗?

DataGrip CSV import option

复制步骤

CREATE TYPE brand AS ENUM ('BMW', 'Renault', 'Ford');

你可以检查你是否声明了一个 enum 类型:

SELECT enum_range(NULL::brand);

我创建了一个虚拟表,其中 manufacturer 列的类型为 brand

CREATE TABLE automobile (
id int,
manufacturer brand,
registration_number varchar(10),
owner varchar(50));

并向其中插入一些虚拟记录:

INSERT INTO automobile (id, manufacturer, registration_number, owner)
VALUES (1, 'BMW', 'AAA-BBB-ZR', 'John'),
(2, 'Renault', 'CCC-BWB-PU', 'Mike');

现在我尝试通过右键单击我的表并选择从文件导入数据... 来从 csv 文件导入数据我选择导入的 csv 文件包含以下两行:

id, manufacturer, registration_number, owner
3,Ford,PZB-URU-LK,Jack

我选择正确的编码选项并单击“确定”。然后生成错误消息:

2:3: conversion failed: "Ford" to brand

如果我在检查 DataGrip 导入选项时选择选项 Insert inconvertible values as Null,我会收到更详细的错误消息:

2:1: ERROR: column "manufacturer" is of type brand but expression is of type character varying   Hint: You will need to rewrite or cast the expression.   Position: 90

我试图在我的 csv 中指定 Ford::brand 并重新加载并遇到了同样的问题。

如何让 DataGrip 理解 Fordbrand enum 的值?

我已经查过了DataGrip documentation on Import/Export但找不到我要找的东西。

最佳答案

最新的 DataGrip 版本可以按预期处理枚举类型。 The issue是固定的。

import

关于sql - 如何将自定义枚举类型的数据从 csv 插入到现有的 PostgreSQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52154127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com