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

2024-02-15

我有 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 http://www.postgresql.org/docs/current/static/runtime-config-compatible.html#GUC-STANDARD-CONFORMING-STRINGS)

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

或使用非标准 PostgreSQL 特定的转义字符串 http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE:

COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE E'\'';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Drupal 视图 - 自定义/修改 SQL

    我遇到了 配置文件复选框 模块的问题 该模块存储以逗号分隔的自定义配置文件字段 问题是我是否创建一个视图来按值过滤 SQL 结果最终是这样的 AND profile values profile interests value in Bus
  • 如何查找列中未使用的ID? [复制]

    这个问题在这里已经有答案了 可能的重复 SQL查询查找丢失的序列号 https stackoverflow com questions 1057389 sql query to find missing sequence numbers 我
  • 每个搜索词显示一行,如果未找到则替换默认值

    Query SELECT product id name FROM product WHERE barcode in 681027 8901030349379 679046 679047 679082 679228 679230 67923
  • MYSQL:SQL查询获取自增字段的值

    我有一张桌子 主键是id及其自动递增 现在 当我插入新记录时 我需要获取更新记录的 id 我怎样才能做到这一点 如果我使用查询 select max id from table name 执行后我可以获得id 但我能确定它是刚刚插入的记录的
  • Excel VBA - 如何逐行读取csv文件而不是整个文件

    这是我需要读取的 csv 文件内容 header header header header header header value value value value value value value value value 我在网上找到
  • 返回年份数组作为年份范围

    我正在尝试查询一个包含以下内容的表character varying 年份列 并将这些年份作为逗号分隔的年份范围字符串返回 年份范围将由数组中存在的连续年份确定 不连续的年份 年份范围应以逗号分隔 数据类型的原因是character var
  • 对 postgresql 中使用 array_agg 创建的文本聚合进行排序

    我在 postgresql 中有一个表 下表 动物 可以解释我的问题 name tiger cat dog 现在我正在使用以下查询 SELECT array to string array agg name FROM animals 结果是
  • 交换 ms-sql 表

    我想以尽可能最好的方式交换到桌子 我有一个 IpToCountry 表 并根据导入的外部 CSV 文件每周创建一个新表 我发现进行切换的最快方法是执行以下操作 sp rename IpToCountry IpToCountryOld go
  • 存储过程总是返回0

    我试图从存储过程获取返回值 但它总是返回 0 c code cmd new SqlCommand cmd CommandType CommandType StoredProcedure cmd CommandText AbsentEntry
  • 用数字 1-1000 填充 Postgres 数据库?

    我是 pgAdmin3 的新手 我想用数字 1 1000 填充 pgAdmin3 中的数据库 我该怎么做呢 目前 我创建了一个名为 MyDatabase 的数据库 其中没有任何内容 每行应与其数值相对应 第 1 行应包含 1 第 2 行应包
  • mysql LIKE 查询时间太长

    SQL SELECT COUNT usr id as total results FROM users as usr LEFT JOIN profile as prof ON prof uid usr uid WHERE usr usern
  • 显示一个表中的所有记录以及另一表中的匹配记录

    您好 我有一张下表 其中记录了活动和积分 Activites A ID Site ActivityValue ActivityName 1 site1 7 ActivityName1 2 site1 6 ActivityName2 2 si
  • 如何从 SQL Server 中的 SELECT 进行更新?

    In SQL服务器 可以将行插入到带有INSERT SELECT陈述 INSERT INTO Table col1 col2 col3 SELECT col1 col2 col3 FROM other table WHERE sql coo
  • 随机数据库与 AWS 中的 Django 和 Postgresql 断开连接

    我试图找出 Django 和数据库连接错误问题的根源 此时 我正在调试提示 因为我认为症状太不具体 一些背景 我一直在使用这个堆栈 在 AWS 中部署了很多年 没有出现任何问题 Ubuntu 在本例中为 20 04 LTS Nginx Uw
  • postgresql中数组的区别

    我有两个数组 1 2 3 4 7 6 and 2 3 7 在 PostgreSQL 中可能有共同的元素 我想做的是从第一个数组中排除第二个数组中存在的所有元素 到目前为止我已经取得了以下成果 SELECT array SELECT unne
  • 在 where 子句中使用聚合函数和不同的列条件

    select PO Order Qty Avg PO Order Qty as totalAverage FROM FirstStrike Retail custom Whse Pricing QR where item code 111
  • Postgres 中 -Infinity 和 Infinity 的适当值

    在一种情况下 我们必须在 Postgres DB 中存储 无穷大和 无穷大的值 应该考虑什么合适的值 如果没有 请建议最合适的替代方案 你实际上可以使用 infinity and infinity for FLOAT4 and FLOAT8
  • 如何使用sql脚本更改列的属性

    如何使用 sql 脚本更改列的属性 这是我尝试过但出现错误的方法 ALTER TABLE dbo tblBiometricPattern COLUMN BiometricPatternID TINYINT NOT NULL IDENTITY
  • 如何在Oracle中从表中选择列,*?

    我正在创建很多脚本 有时为了检查表是否根据我的需要进行更新 我会即时编写几个 SELECT 语句 在 SQL SERVER 中你可以这样写 SELECT Column1 FROM MY TABLE 出于可见性原因 这很有用 但是这似乎在 O
  • 批量插入不适用于 NULL 数据

    当我从 CSV 文件将批量数据插入到表中时 它不起作用 显示错误 第 2 行第 9 列的批量加载数据转换错误 类型不匹配或指定代码页的字符无效 csv 文件中的第 9 列值为空 我该如何处理这个问题 根据这些信息 我认为目标表的特定字段被定

随机推荐