03.업/11.디비

파워셀이용한 데이터 로드

봄날의차 2019. 7. 16. 18:51

0.데이터 사이즈 별로 목록 정리하기

/* 특정데이터베이스의 테이블 목록 */
SELECT 
    table_name,
    table_rows,
    round(data_length/(1024*1024),2) as 'DATA_SIZE(MB)',
    round(index_length/(1024*1024),2) as 'INDEX_SIZE(MB)'
FROM information_schema.TABLES
where table_schema = 'database_name'
GROUP BY table_name 
ORDER BY data_length DESC
;

/* 컬럼명 목록 가져오기 */
SELECT * 
FROM information_schema.columns
WHERE TABLE_SCHEMA = 'bf_change' and table_name='table_name';

/* 컬럼명 지정해서 데이터 가져오기 */
SELECT ..... from table_name  
INTO OUTFILE 'table_name.csv'
CHARACTER SET uft8
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'; 

 


1.power shell 에서 디비접속하기
    C:\Program Files\MySQL\MySQL Server 5.5\bin>
    mysql -h 127.0.0.1 -P 3306 -u root -p

    #####
2.  데이터 다운로드 시 database change : use dbname 
    데이터 업로드 시   database change : use dbname

 

3,4 : 컬럼안의 데이터에 한글, 특수기호 등이 들어가 있는 경우 깨지지 않고 데이타를 이관 시킬 수 있다.
3.쿼리결과 csv파일로 저장하기 power shell 창에서 디비접속 후 : 컬럼명 목록 대로 csv 으로 내보내기
    SELECT [col1],[col2],[col3],[col4] FROM database_name.table_name 
    INTO OUTFILE 'write_the_name_you_want.csv' 
    CHARACTER SET utf8 
    FIELDS TERMINATED BY '[특수문자]' 
    LINES TERMINATED BY '\n';
4.쿼리결과 csv파일로 업로드하기 power shell 창에서 디비접속 후 : 컬럼명 목록 대로 csv 로 가져오기 
    LOAD DATA LOCAL INFILE '/path/your_data.csv'
    INTO TABLE database_name.table_name 
    CHARACTER SET utf8
    FIELDS TERMINATED BY '[특수문자]'
    LINES TERMINATED BY '\n'
    (col1, col2, col3, ...)

 

 

>> 파워쉘에서 접속하기 <<  

cd C:\#####\MySQL\MySQL Server 5.5\bin

C:\#####\MySQL Server 5.5\bin>

mysql -h 127.0.0.1 -P 3306 -u $$$$ -p

$$$$$

 

USE `###_backup`; 


//데이터 올리기
source C:\Users\####\#####_backup_schema.sql

## 현재 사용자 확인            SELECT USER();
## 현재 데이터베이스 확인   SELECT DATABASE();


#### 1.데이터베이스에서 데이터 사이즈 별로 목록 정리하기
SELECT * FROM information_schema.tables WHERE table_schema = 'dbname';

SELECT 
    table_name,
    table_rows,
    round(data_length/(1024*1024),2) as 'DATA_SIZE(MB)',
    round(index_length/(1024*1024),2) as 'INDEX_SIZE(MB)'
FROM information_schema.TABLES
where table_schema = 'dbname'
GROUP BY table_name 
ORDER BY data_length DESC

 


#### 2.데이터베이스로 이동 후 컬럼명, 데이터건수 조회 
//데이터베이스 이동 
use database_name;     
select * from database_name.table_name;

//컬럼명조회
SELECT * 
FROM information_schema.columns
WHERE TABLE_SCHEMA = database_name and table_name=table_name;

//데이터 건수 조회
SELECT count(*)  
FROM databasename.tablename
;  

 

#### 3.파워쉘 창에서 디비접속 후  쿼리결과 csv파일로 저장하기 


    SELECT * 
    FROM information_schema.columns
    WHERE TABLE_SCHEMA = 'databasename ' and table_name='tablename';
    
    select count(*) from databasename.tablename; /* ? */
    
    SELECT 
    ID,board_id,post_id,section,related_id,list_number,depth,parent,type,date,guid,login_id,writer 
    from databasename.tablename;
    
    SELECT 
    컬럼목록 
    from databasename.tablename
    INTO OUTFILE '04.tablename.csv'
    CHARACTER SET utf8
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    ESCAPED BY '\\'
    LINES TERMINATED BY '\n';

 

#### 4.파워쉘창에서 디비접속 후 쿼리결과 csv파일로 업로드하기


    LOAD DATA LOCAL INFILE 'D:\\MySqlBackup\\databasename\\04.tablename.csv'
    INTO TABLE newdatabasename.tablename
    CHARACTER SET utf8
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    ESCAPED BY '\\'
    LINES TERMINATED BY '\n'
    ( 컬럼목록 )
    ;

SELECT count(*)  from newdatabasename.tablename ;