无法将CSV文件导入PostgreSQL

v1uwarro  于 2022-12-30  发布在  PostgreSQL
关注(0)|答案(1)|浏览(196)

我是一个初学者与PostgreSQL,我试图导入一个csv文件到pgAdmin4,但似乎有一些麻烦。我有CSV文件保存在我的桌面上,并没有在CSV文件的标题。以下是我的查询目前看起来像,

COPY opioid_csv(Substance, Source, Specific_Measure, Type_event, Region, PRUID, Time_Period, Year_Quarter, Aggregator, Disaggregator, Unit, Value)
FROM 'Users/myusername/Desktop/opioid_csv.csv'
DELIMITER ','

我已经创建了一个包含所有列名的表,但收到以下错误:
错误:关系“opioid_csv”不存在
SQL状态:42P01

68bkxrlz

68bkxrlz1#

尝试使用psql

postgres=# \dt *.opioid_csv
             List of relations
    Schema    |    Name    | Type  | Owner 
--------------+------------+-------+-------
 marcothesane | opioid_csv | table | marco
(1 row)

很有可能,如果您成功地创建了opioid_csv表,您是在public之外的另一个模式中创建的,您必须将模式(在我的示例中为marcothesane)放在表名之前:使用marcothesane.opioid_csv,而不仅仅是opioid.csv
让我试着用我的CSV文件来做这件事:

marco ~/1/Vertica/supp $ head test.csv
id,text
1,1VIAgFg
2,IfPLHbT
3,EWOmXAx
4,zl8paoh
5,9EpQ9Kx
6,ZpagcCh
7,6xoVoit
8,mCniu1U
9,euieQZa

匹配表DDL -使用我自己的d2 l DDL推断器:

marco ~/1/Vertica/supp $ d2lm -coldelcomma test.csv | tee test.ddl.sql
CREATE TABLE IF NOT EXISTS test (
  id   INTEGER NOT NULL
, text CHAR(7) NOT NULL
);

然后,我用新生成的脚本运行psql:

marco ~/1/Vertica/supp $ psql -af test.ddl.sql 
CREATE TABLE IF NOT EXISTS test (
  id   INTEGER NOT NULL
, text CHAR(7) NOT NULL
);
CREATE TABLE

然后,由于我的文件中有一个标题行,我将COPYcsv header

marco ~/1/Vertica/supp $ psql -c "copy test from  '/Users/marco/1/Vertica/supp/test.csv' delimiter ',' csv header"
COPY 50000
marco ~/1/Vertica/supp $ psql -c "select count(*) from test"
 count 
-------
 50000

和你做的有什么不同?

相关问题