[PostgreSQL실용]_5_ 테이블 생성 후 데이터 불러오기 COPY (ERROR발생)

Hyejin Beck·2024년 1월 10일
0

데이터베이스(SQL)

목록 보기
14/40

  1. 구분된 텍스트 파일 형식의 소스 데이터 준비
    • 마이크로엑세스 또는 MySQL과 같은 다른 데이터 베이스 프로그램 에서 PostgreSQL로 직접 데이터를 전송하려면, 서드파티 도구를 사용해야 한다고 합니다. ( 다른데이터베이스에서 PostgreSQL로 변환
  2. 데이터 저장할 테이블 만들기
  3. COPY 스크립트 작성해서 데이터 가져오기

테이블(컬럼과 데이터타입)생성

CREATE TABLE us_counties_pop_est_2019 ( -- 10년 주기 카운티 인구조사 추정치 테이블 생성 
    state_fips text,                         -- 주 미국 연방 정보 처리 표준(FIPS) 코드
    county_fips text,                        -- 카운티 미국 연방 정보 처리 표준(FIPS) 코드
    region smallint,                         -- 구역
    state_name text,                         -- 주 이름	
    county_name text,                        -- 카운티 이름
    area_land bigint,                        -- 토지 면적 (제곱미터)
    area_water bigint,                       -- 수면 면적 (제곱미터)
    internal_point_lat numeric(10,7),        -- 위도
    internal_point_lon numeric(10,7),        -- 경도
    pop_est_2018 integer,                    -- 2018년 7월 1일 기준 인구 추정치
    pop_est_2019 integer,                    -- 2019년 7월 1일 기준 인구 추정치
    births_2019 integer,                     -- 2018년 7월 1일부터 2019년 6월 30일 사이 출생자 수
    deaths_2019 integer,                     -- 2018년 7월 1일부터 2019년 6월 30일 사이 사망자 수
    international_migr_2019 integer,         -- 2018년 7월 1일부터 2019년 6월 30일 사이 순 국제 이주자 수
    domestic_migr_2019 integer,              -- 2018년 7월 1일부터 2019년 6월 30일 사이 순 지역 이주자 수
    residual_2019 integer,                   -- 일관성을 위해 추정치를 조정하는 데 사용되는 숫자
    CONSTRAINT counties_2019_key PRIMARY KEY (state_fips, county_fips)	
);

탐색기의 해당 데이터베이스 마우스 오른쪽 > Refresh..
그리고 스키마 > public > 테이블 만들어졌는지 확인합니다.

빈 테이블이 정상적으로 만들어졌습니다.

데이터 가져오기

데이터 정보

데이터를 가져올 땐, 항상 먼저 데이터에 대한 정보를 확인해야 합니다.
인구 추정치에 대한 정보

COPY us_counties_pop_est_2019
FROM '/Users/beckhyejin/Desktop/computer/practical-sql-main/Chapter_05/us_counties_pop_est_2019.csv'
WITH (FORMAT CSV, HEADER);

FROM 에는 해당 파일 오른쪽 마우스 클릭 > copy path 후 붙혀넣기


COPY FROM instructs the PostgreSQL server process to read a file.

권한이 없다고 합니다!
맥북의 경우 chmod르 권한 부여를 해줬던 것 같습니다!

터미널에 권한 부여

sudo chmod +r /Users/beckhyejin/Desktop/computer/practical-sql-main    

해도 안됩니다.
PostgresSQL 다시 시작해야 한다고 합니다.

sudo -u postgres pg_ctl -D /Library/PostgreSQL/15/data restart

PostgreSQL 재연결

짜증나지만 데이터베이스 연결에 대해 착오가 있었던 것 같습니다.

분명 PostgreSQL 어제 설치할때만 해도, database가 아무것도 없어서 initialize로 새 데이터베이스를 만들어줬는데요!!!!!
왜 지금은 없는걸까요!!!!!

그래도 한 번 궁금하니 beckhyejin 으로 데이터베이스 연결하겠습니다.

pgAdmin 재연결

데이터베이스가 바뀌었으니, pdAdmin도 재연결 해줍니다.

테이블 재생성

해당 데이터베이스 > 스키마 > public 까지 와주곤
위에 도구들 > 쿼리도구 다시 켜줍니다.

위에 있는 CREATE TABLE 복붙 후 실행 > refrash 도 다시 해줍니다.

COPY TABLE 도 다시 해줍니다.

오 뭔가 되는 것 같군요!

궁금증

왜 analysis 데이터베이스를 이전에 만들고 저장까지 한 것 같은데, PostgreSQL 데이터베이스에는 없는걸까요?
그리고 처음 PostgreSQL 을 설치한 뒤 열었을 때엔, 아무런 데이터베이스가 없었습니다.
그 뒤 analysis 데이터베이스를 만들었는데
왜 지금은 analysis 데이터베이스가 없고 template1이란 다른 데이터베이스가 만들어진걸까요?

beckhyejin 은 제 컴퓨터 이름이니까 기본으로 생성되는 데이터베이스인것 같고,
postgres 은 PostgreSQL 관련 생성되는 데이터베이스인것 같은데
template1은 따로 만든게 없습니다.
그렇다면 혹시 analysis 데이터베이스를 만들때 이름을 제가 따로 저장하지 않았기에 template1로 자동저장된거일까요?

아무튼 아직 거기까지 신경쓸 여력이 없기에 조금 쉬고 ~~~
모든 제 자료가 들어있는 기본 beckhyejin 데이터베이스를 연결해서 다시 시도해보겠씁니다!!!~!

profile
데이터기반 스토리텔링을 통해 인사이트를 얻습니다.

0개의 댓글

관련 채용 정보