-
sed로 " 안의 , 제거하기프로그래밍/DB 2020. 1. 8. 15:07728x90반응형
load data infile로 csv 파일 내용을 mysql 테이블로 import했는데
warning 개수가 넘 많다 -_-;;
LOAD DATA INFILE '/var/lib/mysql-files/sample.csv' INTO TABLE sample
FIELDS TERMINATED BY ','
IGNORE 1 LINES;
Query OK, 12147957 rows affected, 65535 warnings (1 min 44.92 sec)
show warnings; 로 경고 메세지를 확인하니 아래와 같이 테이블의 input columns 개수보다
칼럼 개수가 많다고 한다.
Warning | 1265 | Data truncated for column '전용면적' at row 3758 |
| Warning | 1262 | Row 3758 was truncated; it contained more data than there were input columns |
| Warning | 1265 | Data truncated for column '전용면적' at row 3759 |
| Warning | 1262 | Row 3759 was truncated; it contained more data than there were input columns |
| Warning | 1265 | Data truncated for column '전용면적' at row 3760 |
| Warning | 1262 | Row 3760 was truncated; it contained more data than there were input columns |
| Warning | 1265 | Data truncated for column '전용면적' at row 3761 |
귀찮지만 데이터 확인 ㄱㄱ
, 를 기준으로 필드를 분리하는데 건물 이름에 , 가 들어가 있어서 필드 개수가 더 많아진 것임 ㅇㅇ
2016,01,4211011200,강원 춘천 춘천로64번길 21-0,강원,춘천,효자,,0,688,6,,"엘피스빌(가,다)(구한전사택)",60.69,4,48000000
2016,01,4211011200,강원 춘천 춘천로64번길 21-0,강원,춘천,효자,,0,688,6,,"엘피스빌(가,다)(구한전사택)",60.69,3,49000000
2016,01,4211011200,강원 춘천 춘천로64번길 21-0,강원,춘천,효자,,0,688,6,,"엘피스빌(가,다)(구한전사택)",60.69,4,48000000
sed 로 " 안의 , 를 제거하였다.
sed -e 's/\(".*\),\(.*"\)/\1 \2/g' sample.csv &> sample2.csv
-e 옵션은 정규식 옵션이고
's/A/B/g' 는 A 패턴을 B 패턴으로 바꾸겠다는 것이다.
()는 정규식 서브 패턴으로 A패턴에서 나오는 순서대로 B패턴에서 \1, \2 , 로 표시한다.
참고로 \은 escape character이다.
위 식이 의미하는 것은 ,를 기준으로 앞의 "를 서브패턴1로 보고
뒤 "를 서브패턴2으로 보아서
최종적으로 " 아파트이름(문자열, 문자열) " 에서 ,를 제거하는 것이다.
아래는 아래 정규식을 적용한 결과 파일이다.
2016,01,4211011200,강원 춘천 춘천로64번길 21-0,강원,춘천,효자,,0,688,6,,"엘피스빌(가 다)(구한전사택)",51.81,1,40000000
2016,01,4211011200,강원 춘천 춘천로64번길 21-0,강원,춘천,효자,,0,688,6,,"엘피스빌(가 다)(구한전사택)",77.11,3,62000000
2016,01,4211011200,강원 춘천 춘천로64번길 21-0,강원,춘천,효자,,0,688,6,,"엘피스빌(가 다)(구한전사택)",77.11,4,60000000
이제 정상적으로 경고 없이 파일 내용이 테이블로 로드되었다.
728x90반응형'프로그래밍 > DB' 카테고리의 다른 글
mysql 데이터베이스 백업 스크립트 (0) 2020.05.02 psycopg2.OperationalError: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? (0) 2020.03.27 postgreSQL 사용법 - 테이블 업데이트 (0) 2019.09.28 [ postgreSQL] 다른 테이블 복사하기 (2) 2019.09.28 postgresql 테이블 조인(join) 예시 (0) 2019.04.27