CSV 데이터 MySQL에 입력하기

업데이트:


MySQL - CSV

Docker로 실행 중인 MySQL에 CSV 데이터를 입력해보자.

EC2 - RDS 환경에서 MySQL에 CSV 데이터를 입력해보자.

# CSV 데이터 마이그레이션

Docker 컨테이너로 로컬 CSV 파일 복사하기

  • 로컬의 csv 파일을 docker로 복사한다.

    docker cp ~/<csv-file-name>.csv <container-id>:/
      
    // 예시
    docker cp ~/Documents/csv/restaurant.csv 8c19cdca40d0:/
    
  • 도커 환경에서 ls -al로 파일을 확인해보면 정상적으로 복사된 것을 볼 수 있다.

    csv000

MySQL에 CSV 데이터 마이그레이션하기

  • Docker - MySQL 접속 후 사용 할 DB 선택한다.

  • CSV 데이터가 입력 될 테이블을 생성한다. 단, CSV에 입력된 데이터 순서와 컬럼 순서는 일치해야 한다.

  • 해당 테이블에 csv 파일 입력한다. 콤마, 와 줄바꿈\n으로 데이터를 나눈다.

    LOAD DATA LOCAL INFILE '/restaurant.csv' INTO TABLE restaurant FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
    
  • 데이터 입력 후 Warning이 발생한다면 show warnings 명령어로 확인 할 수 있다.


# EC2 - RDS 환경에서 CSV 데이터 마이그레이션

Command line

mysql -u <RDS-userId> -p -h <RDS-Endpoint> --local-infile <DB-name> -e "LOAD DATA LOCAL INFILE '<file.csv>' INTO TABLE <table-name> FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'"

Type1 : CSV 컬럼 순서대로 입력

  • 예시
mysql -u admin -p -h dev-henry.ckp6apk75dyc.ap-northeast-2.rds.amazonaws.com --local-infile osikdang -e "LOAD DATA LOCAL INFILE '~/github/o-sikdang-server/csv/restaurant.csv' INTO TABLE host FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'"
  • SQL
LOAD DATA LOCAL INFILE '/mock_host.csv' INTO TABLE host FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

Type2 : CSV 컬럼과 테이블 컬럼 커스텀 매칭하여 입력

  • 예시
mysql -u admin -p -h dev-henry.ckp6apk75dyc.ap-northeast-2.rds.amazonaws.com --local-infile osikdang -e "LOAD DATA LOCAL INFILE '~/github/o-sikdang-server/csv/restaurant.csv' INTO TABLE restaurant FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (@var1, @var2, @var3, @var4, @var5, @var6, @var7, @var8, @var9, @var10, @var11, @var12, @var13, @var14, @var15, @var16) SET id = @var1, address = @var2, address_city = @var3, address_district = @var4, address_district_old = @var5, address_old = @var6, address_province = @var7, category = @var8, category_code = @var9, category_industry = @var10,  category_main = @var11, category_sub = @var12, point = POINT(@var14, @var13), name = @var15, zip_code = @var16, rating = '0'"
  • SQL
    • CSV 컬럼에는 없고 테이블 컬럼은 존재하는 rating 필드 0으로 초기화하여 데이터 입력
LOAD DATA LOCAL INFILE '/restaurant.csv' INTO TABLE restaurant FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (@var1, @var2, @var3, @var4, @var5, @var6, @var7, @var8, @var9, @var10, @var11, @var12, @var13, @var14, @var15, @var16) SET id = @var1, address = @var2, address_city = @var3, address_district = @var4, address_district_old = @var5, address_old = @var6, address_province = @var7, category = @var8, category_code = @var9, category_industry = @var10,  category_main = @var11, category_sub = @var12, point = POINT(@var14, @var13), name = @var15, zip_code = @var16, rating = '0';

태그: ,

카테고리:

업데이트:

댓글남기기