导入CSV文件导入PSQL分贝
问题描述:
我想导入CSV文件给psql分贝......导入CSV文件导入PSQL分贝
我已经搜索并尝试使用副本,也称为https://www.commandprompt.com/ppbook/r23528和我使用的语法是:
copy location from 'file.csv' with delimiters '\t' NULL as 'NULL' CSV;
注意:我的csv文件由“选项卡”分隔。
执行上述CMD第一时间之后,它示出了:
ERROR: syntax error at or near ""\t""
LINE 1: ...om 'file.csv' using delimiters "\t" ;
和第二时间,
ERROR: syntax error at or near "copy"
LINE 2: copy location from 'file.csv' using d...
编辑后,
第二时间我试图使用像,
copy location from 'file.csv' with delimiter E'\t' NULL as 'NULL' CSV;
ERROR: extra data after last expected column
CONTEXT: COPY location, line 1: "AD AD100 Canillo 42.5833 1.6667 6"
我的表介绍
Table "public.location"
Column | Type | Modifiers
-------------+------------------------+-----------
countrycode | character varying(2) |
postalcode | character varying(20) |
place | character varying(100) |
state | character varying(20) |
country | character varying(100) |
country2 | character varying(20) |
community | character varying(100) |
community2 | character varying(20) |
latitude | double precision |
longitude | double precision |
accuracy | integer |
如何解决这个问题?
输入:
AD AD100 Canillo 42.5833 1.6667 6
AD AD200 Encamp 42.5333 1.6333 6
AD AD300 Ordino 42.6 1.55 6
AD AD400 La Massana 42.5667 1.4833 6
AD AD500 Andorra la Vella 42.5 1.5 6
AD AD600 Sant Julià de Lòria 42.4667 1.5 6
AD AD700 Escaldes-Engordany 42.5 1.5667 6
AR 3636 "POZO CERCADO (EL CHORRO (F), DPTO. RIVADAVIA (S))" SALTA A -23.4933 -61.9267 3
AR 4123 LAS SALADAS SALTA A -25.7833 -64.5 4
AR 4126 LA MARAVILLA SALTA A -26.0833 -65.263 3
AR 4126 TALA SALTA A -26.1167 -65.2833 4
AR 4126 LA ASUNCION SALTA A -26.0833 -65.263 3
AR 4126 BRETE SALTA A -26.0667 -65.3667 4
AR 4126 EL SUNCHAL SALTA A -26.0833 -65.263 3
AR 4126 CEIBAL SALTA A -26.1 -65.0167 4
AR 4126 BARADERO SALTA A -26.0833 -65.263 3
AR 4126 CANDELARIA SALTA A -26.1 -65.1 4
AR 4126 ALEM SALTA A -26.0833 -65.263 3
AR 4126 EL BRETE SALTA A -26.0667 -65.3667 4
AR 4126 EL CUIBAL SALTA A -26.0833 -65.263 3
AR 4126 EL JARDIN SALTA A -26.0833 -65.3833 4
AR 4126 OVEJERO SALTA A -26.0833 -65.263 3
AR 4126 LOS MOGOTES SALTA A -26.0333 -65.2 4
AR 4126 "MIRAFLORES (TALA, DPTO. CANDELARIA)" SALTA A -26.0833 -65.263 3
这是一些如输入...
当我打开MS艾克赛尔片这个文件,用分隔符标签,它正确的方式隔开数据到培训相关coloumn ..
输入与标签和空值的文件,
AD\tAD100\tCanillo\t\n\t\n\t\n\t\n\t\n\t\n\t42.5833\t1.6667\t6
AD\tAD200\tEncamp\t\n\t\n\t\n\t\n\t\n\t\n\t42.5333\t1.6333\t6
AR\t3636\t"POZO CERCADO (EL CHORRO (F), DPTO. RIVADAVIA (S))"\tSALTA\tA\t\n\t\n\t\n\t\n\t-23.4933\t-61.9267\t3
答
Per documentation对COPY
声明,应该是WITH DELIMITER
而不是DELIMITERS。
此外,COPY
语法发生了变化,我们鼓励你使用以下命令:
COPY location FROM 'file.csv' WITH (FORMAT csv, DELIMITER '\t', NULL 'NULL');
编辑:
我使用提供的信息来测试如何COPY
会对提供的数据进行处理:
CREATE TABLE atest (
countrycode text CHECK (length(countrycode) <= 2),
postalcode text CHECK (length(postalcode) <=20),
place text CHECK (length(place) <= 100),
state text CHECK (length(state) <= 20),
country text CHECK (length(country) <= 100),
country2 text CHECK (length(country2) <= 20),
community text CHECK (length(community) <= 100),
community2 text CHECK (length(community2) <= 20),
latitude double precision,
longitude double precision,
accuracy integer);
我使用上述命令(通过一个位):
COPY atest FROM '/Users/viy/atest2.csv'
WITH (FORMAT csv, DELIMITER E'\t', NULL '\n');
并如上所述得到了同样的错误。这是预料中的,'因为有太多的空地。让我们来看看CSV
数据,以及它如何表定义(所有\t
新线替换)匹配:
AD countrycode
AD100 postalcode
Canillo place
\n state
\n country
\n country2
\n community
\n community2
\n latitude
42.5833 longitude
1.6667 accuracy
6 <-- this one gives the error!
所以,为了得到的数据加载,你必须检查你的源数据并删除多余的空场中间。另一种方法是调整表格的定义以匹配您的源数据。
谢谢您的回答,这可能是你说我改变了我的语法 副本的位置从“FILE.CSV”与分隔符E中的Postgres 9.1.4是有用的, 我使用的Postgres 8.3,“\ t” NULL作为'NULL'CSV; 错误:去年预期的列 上下文后额外的数据:副本的位置,第1行: “AD \t AD100 \t卡尼略\t \t \t \t \t \t \t 42.5833 \t 1.6667 \t 6” 如何解决这个问题? – 2012-07-06 13:56:13
@SangeethaNarayanaMoorthy,请将你的表的定义包含到帖子中(使用psql的'\ d +命令)。 –
vyegorov
2012-07-06 14:03:22
列|类型|修饰符 ------------- + ------------------------ + --------- - countrycode |字符变化(2)| postalcode |字符变化(20)| 地方|字符变化(100)| 状态|字符变化(20)| 国家|字符变化(100)| country2 |字符变化(20)| 社区|字符变化(100)| community2 |字符变化(20)| 纬度|双精度| 经度|双精度| 准确性|整数| – 2012-07-09 04:55:35