반응형

출처: http://moonlighting.tistory.com/140

 

 

 

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


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


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



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

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


1
2
3
4
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 한다.



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

 

 

 

load data local infile '불러올파일명' into table 입력할 테이블명 fields terminated by ','
enclosed by '"' lines terminated by '\n'

 

 

http://stackoverflow.com/questions/10762239/mysql-enable-load-data-local-infile

위 오류 해결 방안
 

You should set the option:

local-infile=1

into your [mysql] entry of my.cnf file or call mysql client with the --local-infile option:

mysql --local-infile -uroot -pyourpwd yourdbname

You have to be sure that the same parameter is defined into your [mysqld] section too to enable the "local infile" feature server side.

It's a security restriction.

반응형
반응형

출처:https://code.mythtv.org/trac/ticket/8585

 

MySQL Documentation에는 ISODate format이 datetime format과  일치하지는 않는다고 되어있다.

 

그래도 그냥 속성에 datetime을 입력하고 MySQL에 들어오는 값들을 확인하였다.

 

 

 

 

결과는 NULL로 찍힌다.. Documentation 말이 맞넴..

 

 

 

 

 

<그림 3>

그림3은 time format을 timestamp로 바꾸고 확인해본 화면이다.

timestamp는 mysql로 들어올때 format이 안맞으면 시스템  현재 시간을 저장한다.

 

 

<그림 4>

그림 4를 보면 시간이 잘 들어 온 것을 확인 할 수 있었다.

<그림 5>

 

 그림 5는 로그 수집서버이고, 그림 4는 솔루션 즉 로그를 받아서 분석하는 서버이다. 그림 4와 그림 5를 보면 같은 로그인데 시간이 약 37초 정도 차이 나는 것을 확인 할 수 있다.

 

실시간 로그 분석을 위해 구축하였기에 37초정도의 차이가 클 수도 있을것 같다.

 

두 서버간의 시간차이를 줄일려면 ISODate를 MySQL 포맷에 맞게 변환을 해주어야 한다.

 

STR_TO_DATE(str,format)을 이용하자!

 

 

 

 

반응형
반응형

출처:http://mcpaint.tistory.com/194

 

/* 테이블 생성 */
create table [테이블명](id int,name varchar(20));

/* 컬럼 추가 */
alter table [테이블명] add [컬럼명] [타입] [옵션];
ex) alter table [테이블명] add [컬럼명] varchar(100) not null default '0';

/* 컬럼 삭제 */
alter table [테이블명] drop [컬럼명];

/* 컬럼명 변경 및 타입 변경 */
alter table [테이블명] change [컬럼명] [변경할컬럼명] varchar(12);

/* 컬럼 타입 수정 */
alter table [테이블명] modify [컬럼명] varchar(14);

/* 테이블명 수정 */
alter table [테이블명] rename [변경할테이블명];

/* 테이블 삭제 */
drop table [테이블명];

 

 

Primary Key 2개 설정

CREATE TABLE member (
mem_num INT NOT NULL AUTO_INCREMENT,
mem_id VARCHAR(20), 
 

PRIMARY KEY (mem_num, mem_id)); 

 

컬럼 추가.

ALTER TABLE  테이블이름  ADD

새로 추가된 컬럼은 테이블 맨 마지막에 추가되며 NULL 값으로 입력됩니다.

 


ALTER TABLE EMP

ADD (email VARCHAR2(10));


 



컬럼 속성 변경.

ALTER TABLE  테이블이름  MODIFY

컬럼에 대해서 데이터 타입이나 크기, 기본값들을 변경할 수 있습니다.

 


ALTER TABLE EMP

MODIFY (email VARCHAR2(40));


 



컬럼 이름 변경.

ALTER TABLE  테이블이름  RENAME COLUMN 변경전이름 TO 변경후이름

 


ALTER TABLE EMP

RENAME COLUMN email to navermail;

  


  



컬럼 삭제.

ALTER TABLE  테이블이름  DROP


 


ALTER TABLE EMP

DROP COLUMN email;



[출처] http://k_builder.blog.me/40188303955
반응형
반응형

출처:https://opentutorials.org/module/1175/7779

 

a. MySQL Folder로 이동

cd /etc/mysql

 

b. my.cnf 파일을 출력

sudo nano my.cnf

 

port = 3306

bind-address = 127.0.0.1

127.0.0.1은 현재 Lock이 걸린 상태기 때문에,

root 계정 이외의 접속자는 제한된다.

원격접속을 허용 해야함으로,  # 을 넣어 Lock을 풀어준다.

# bind-address = 127.0.0.1

저장 !

 

c. MySQL Restart

sudo /etc/init.d/mysql restart

 

d. Run MySQL

mysql -uroot -p

 

e. Ubuntu MySQL 원격접속 허용 명령 실행 1

grant all privileges on *.* to 'root'@'Windows IP Address or %' identified by 'Password';

( 접속이 원만하지 않을 경우는 %를 사용 모두 접근 가능하게 만들어 주면 된다. )

 

f. 권한 갱신

flush privileges;

 

 

반응형

+ Recent posts