gpt4 book ai didi

sql - 从具有单引号数据的 csv 文件加载 postgreSQL 数据的正确 COPY 命令?

转载 作者:行者123 更新时间:2023-11-29 11:11:24 25 4
gpt4 key购买 nike

我有一个包含如下内容的 csv 文件:

10,53073,0,0,'Y','2008-05-30 21:46:55',0,'2008-05-30 21:48:04',0,53071,2

我想将 csv 数据加载到 my_table 中。

CREATE TABLE my_table
(
ad_tree_id numeric(10,0) NOT NULL,
node_id numeric(10,0) NOT NULL,
ad_client_id numeric(10,0) NOT NULL,
ad_org_id numeric(10,0) NOT NULL,
isactive character(1) NOT NULL DEFAULT 'Y'::bpchar,
created timestamp without time zone NOT NULL DEFAULT now(),
createdby numeric(10,0) NOT NULL,
updated timestamp without time zone NOT NULL DEFAULT now(),
updatedby numeric(10,0) NOT NULL,
parent_id numeric(10,0),
seqno numeric(10,0),
CONSTRAINT ad_treenodemm_pkey PRIMARY KEY (ad_tree_id , node_id ),
CONSTRAINT adtree_adtreenodemm FOREIGN KEY (ad_tree_id)
REFERENCES ad_tree (ad_tree_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
CONSTRAINT ad_treenodemm_isactive_check CHECK (isactive = ANY (ARRAY['Y'::bpchar, 'N'::bpchar]))
)

当我在 pgAdmin III 工具中运行这个命令时:

COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV;

我得到了错误:

ERROR:  value too long for type character(1)
CONTEXT: COPY my_table, line 1, column isactive: "'Y'"

然后我修改命令如下:

COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE ''';
COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE '\'';
COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE '\'' ESCAPE '\';
COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE '\'' ESCAPE \;

尝试时全部失败。

那么,谁能告诉我这个案例的正确 COPY 命令?

最佳答案

双单引号(如果 standard_conforming_strings 开启,参见 the docs )

COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE '''';

或使用非标准的 PostgreSQL 特定 escape string :

COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE E'\'';

关于sql - 从具有单引号数据的 csv 文件加载 postgreSQL 数据的正确 COPY 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12856377/

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