sed로 " 안의 , 제거하기




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




이제 정상적으로 경고 없이 파일 내용이 테이블로 로드되었다. 






 



  • 2017.10.25 14:05 ADDR 수정/삭제 답글

    비밀댓글입니다