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
로 파일을 확인해보면 정상적으로 복사된 것을 볼 수 있다.
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';
댓글남기기