database - postgresql导入csv文件

标签 database postgresql

我需要将一个 csv 文件上传到 postgresql 数据库表。 像这样的 csv 文件

A           B               C       D               E       F

16777216    16777471        AU      AUSTRALIA       OC      OCEANIA
16777472    16778239        CN      CHINA           AS      ASIA
16778240    16779263        AU      AUSTRALIA       OC      OCEANIA
16779264    16781311        CN      CHINA           AS      ASIA

表格是

CREATE TABLE ipligence
(
  ip_from numeric(11,0) NOT NULL DEFAULT 0,
  ip_to numeric(11,0) NOT NULL DEFAULT 0,
  country_code character varying(10)[] NOT NULL,
  country_name character varying(225)[] NOT NULL,
  continent_code character varying(10)[] NOT NULL,
  continent_name character varying(255)[] NOT NULL,
  CONSTRAINT ipligence_pkey PRIMARY KEY (ip_to )
 )
WITH (
  OIDS=FALSE
 );
ALTER TABLE ipligence

我在 pgsql 中使用复制命令,

copy ipligence 
from '/home/pgsql/ipligence-lite.csv' 
delimiter as ',' 
csv quote as '"';

但它显示

  ERROR:  array value must start with "{" or dimension information
  CONTEXT:  COPY ipligence, line 1, column country_code: "AU"

我怎样才能成功地将 csv 文件输入到 postgresql 数据库中。谢谢!

最佳答案

您的表创建不正确。例如,此列声明:

country_code character varying(10)[] NOT NULL,

正在创建一个 varchar(10) 数组。你只想要一个。将 [] 放在这些列上。

此外,您发布的示例数据实际上并未以逗号分隔,但我假设实际数据文件是这样。

关于database - postgresql导入csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13756682/

相关文章:

sql - table==1 是意外的此时批处理文件

sql - 使用一列中的最高总和值作为过滤器来按 PostgreSQL 中的另一列进行分组

sql - 如何在 SQL 中对数组进行 string_agg?

sql - 如何查找并替换每行的第一个空值?

mysql - 创建一个包含需要与 3 个不同供应商匹配的邮政编码的关系数据库

angularjs - OrderCloud.io API XP 大小限制

python - MySQL/Python INSERT INTO 语句问题

database - 选择多条记录的良好 UI 示例

ruby - 如何从 DataMapper::Collection 获取原始 SQL?

sql - 如何修复 postgres-utils eval() 错误 : missing FROM-clause entry for table "foo"?