mv 명령으로 디렉토리 이동시 덮어쓰기(mv directory target not empty)

mv member1/ group/


위 명령 처럼 member1 디렉토리를 group 디렉토리 아래로 이동하려고 할때 group/member1 이란 디렉토리가 이미 존재하면 아래 처럼 Dirctory not empty 라는 에러가 발생하면서 이동을 할 수가 없다.


mv: cannot move `member1/' to `group/member1': Directory not empty


-f(--force) 옵션을 줘도 마찬가지이다.

mv 명령으로는 해결 방법을 못 찾았고 아래와 같이 rsync 명령과 rm 명령을 병행해서 써야 한다.


rsync -a member1/ group/

(또는 rsync -a -v member1 group/)

rm -rf member1/




[MySQL] shell에서 sql script 실행하기

shell에서 미리 작성해 둔 sql 스크립트를 실행해야 한다면 아래와 같이 하면 된다.


$ /usr/bin/mysql -u(dbUser) -p(password) mysql < (scriptFilePath)


[MySQL] csv 파일을 직접 MySQL 테이블로 Import 하는 방법 (대용량 파일 import 팁)

MySQL 테이블에 데이터를 넣는 방법 중 csv 파일을 직접 넣는 방법이 있다.


csv 파일과 DB 테이블 구조가 일치하면 아래와 같이 입력하면 된다.


LOAD DATA LOCAL INFILE "filePath" 
INTO TABLE dbName.tableName FIELDS TERMINATED BY ",";



만약 파일의 크기가 크고 테이블에 index가 걸려 있으면 시간이 굉장히 오래 걸릴 수 있다.

그럴 경우에는 아래와 같이 index를 먼저 해제해 주고 파일을 올린 다음 다시 index를 걸면 상당히 빠르게 테이블에 데이터를 넣을 수 있다.


ALTER TABLE dbName.tableName DISABLE KEYS;
LOAD DATA local INFILE "filePath" 
INTO TABLE dbName.tableName FIELDS TERMINATED BY ",";
ALTER TABLE dbName.tableName ENABLE KEYS;


대략 2GB 정도 되는 파일도 10분 정도로 import가 완료됐다.



만약 csv 파일 구조와 DB 테이블 구조가 다른 경우는 아래 샘플 sql 문 참조해서 import 한다.



LOAD DATA LOCAL INFILE 'file_name'
INTO TABLE table_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(column1,column2,column3, ...);