리눅스에 올린 csv 파일 → mySQL(MariaDB) →SQL을 사용해서 데이터 전처리
파이프라인 구축 문제1. mySQL(Maria DB)에 접속
systemctl start mariadb
mysql -u root -p (패스워드는 그냥 엔터)
SHOW DATABASES;
use orcl;
select version();
systemctl start mariadb
mysql -u root -p
SHOW DATABASES;
use orcl;
select version();
⭐이력서에 넣을 보유기술 목록 → 최대한 화려하게
리눅스 centos7에 MariaDB (10.3.37) 설치 및 데이터 파이프라인 구축
MariaDB (10.3.37) 에 csv 파일로 테이블 생성 및 SQL 로 원하는 데이터 추출
파이프라인 구축 문제2. movies_comma.csv 파일을 가지고 테이블 생성하기
head -3 movies_comma.csv;
[root@localhost ~]# head -3 movies_comma.csv; 1,Toy Story (1995),Animation|Children's|Comedy 2,Jumanji (1995),Adventure|Children's|Fantasy 3,Grumpier Old Men (1995),Comedy|Romance
create table movies (
id int primary key,
title varchar(255),
genres varchar(255) );
show tables;
load data local infile '/root/movies_comma.csv'
into table movies
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(id, title, genres);
select * from movies limit 5;
load data local infile '/root/ratings_comma.csv'
into table ratings
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
( user_id, movie_id, rating, timestamp);
운영체제 : 윈도우, 리눅스
database : 오라클, mySQL, MariaDB
select * from ratings limit 5;
파이프라인 구축 문제4. users_comma.csv도 마리아 디비에 테이블로 구성하기
create table users (
user_id int primary key,
gender char(1),
age int,
occupation int,
zip_code varchar(10) );
리눅스랑 연동한 mySQL로 포폴 만들어주면 아주 좋음!
SELECT * FROM users LIMIT 5;
파이프라인 구축 문제5. 영화 Toy Story를 관람한 연령을 조회하기
movies — ratings — users ^title ^age
select u.age, count(*) as view_count
from movies m , ratings r, users u
where m.id = r.movie_id and r.user_id = u.user_id
and m.title ='Toy Story (1995)'
group by u.age
order by view_count desc;
파이프라인 구축 문제6. 위의 결과를 csv 파일로 추출하기
select u.age, count(*) as view_count into outfile '/tmp/age_view_count.csv'
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
from movies m , ratings r, users u
where m.id = r.movie_id and r.user_id = u.user_id
and m.title ='Toy Story (1995)'
group by u.age
order by view_count desc;
만약 위와같이 했는데 /tmp 밑에 age_view_count.csv 가 안보인다면 find 명령어로 직접 찾아야함
root 에서
cd / tmp
find -name age_view_count.csv
파이프라인 구축 문제7. 위에서 추출한 csv 파일을 윈도우로 내리기
- root 에서
cd /tmp
ls -l age_view_count.csv
cat age_view_count.csv
문제1. 평점(rating)이 5에 해당하는 영화 이름을 중복 제거해서 출력하기
movies — ratings ^title ^rating
select distinct(m.title), r.rating
from movies m , ratings r
where m.id = r.movie_id
and r.rating = 5;
다음 작업은 putty 해서 하지말고 리눅스 서버 안에 터미널창에 수행하고 root 유져로 접속해서 수행합니다.
(모바텀에서는 잘 안되니까 버추얼 박스 터미널에서 수행 모바텀에서 했다가 끄려면 엑스서버 눌러서 끄고 다시 엑스서버 눌러서 무지개로 활성화 시키기)
인터넷이 연결 되어 있어야 하며, 아래의 명령어를 순서대로 실행 한다. ( root 권한으로 진행 )
yum install epel-release -y
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-release-el7-5.noarch.rpm -y
yum install mysql-workbench -y
마지막으로 다음 명령어 실행
mysql-workbench
2. 새로운 터미널 창을 열고 아이피 주소를 확인합니다.
# ifconfig
3. 마리아 디비에 접속할 유져를 생성합니다.
# mysql -u root -p
MariaDB [(none)]> use orcl;
MariaDB [orcl]> create user scott@'192.168.122.1' identified by 'tiger';
MariaDB [orcl]> GRANT ALL PRIVILEGES ON orcl.* to scott@'192.168.122.1';
MariaDB [orcl]> flush privileges;
MariaDB [orcl]> exit;
그리고 scott 유져로 접속해봅니다.
# mysql -h 192.168.122.1 -u scott -p
-> 패스워드는 tiger 임
MariaDB [(none)]> use orcl;
접속이 잘되었으면 이제 아까 mysqlworkbench 열어놓은 창으로 돌아옵니다.
4. mysqlworkbench 를 실행하여 접속 정보를 아래와 같이 기술합니다.
가운데 + 를 누룹니다.
다음과 같이 접속정보를 입력합니다.
비밀번호 tiger
나머지는 다 오케이
5. 접속한후에 emp 테이블을 조회합니다.
use orcl;
create table emp
(empno int(4) not null,
Ename varchar(10),
Job varchar(9),
Mgr int(4),
Hiredate date,
Sal int(7),
Comm int(7),
Deptno int(4) );
create table dept
(deptno int(2),
dname varchar(20),
loc varchar(20) );
INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');
INSERT INTO emp VALUES (7839,'KING','PRESIDENT',NULL,'81-11-17',5000,NULL,10);
INSERT INTO emp VALUES (7698,'BLAKE','MANAGER',7839,'81-05-01',2850,NULL,30);
INSERT INTO emp VALUES (7782,'CLARK','MANAGER',7839,'81-05-09',2450,NULL,10);
INSERT INTO emp VALUES (7566,'JONES','MANAGER',7839,'81-04-01',2975,NULL,20);
INSERT INTO emp VALUES (7654,'MARTIN','SALESMAN',7698,'81-09-10',1250,1400,30);
INSERT INTO emp VALUES (7844,'TURNER','SALESMAN',7698,'81-08-21',1500,0,30);
INSERT INTO emp VALUES (7900,'JAMES','CLERK',7698,'81-12-11',950,NULL,30);
INSERT INTO emp VALUES (7521,'WARD','SALESMAN',7698,'81-02-23',1250,500,30);
INSERT INTO emp VALUES (7902,'FORD','ANALYST',7566,'81-12-11',3000,NULL,20);
INSERT INTO emp VALUES (7369,'SMITH','CLERK',7902,'80-12-09',800,NULL,20);
INSERT INTO emp VALUES (7788,'SCOTT','ANALYST',7566,'82-12-22',3000,NULL,20);
INSERT INTO emp VALUES (7876,'ADAMS','CLERK',7788,'83-01-15',1100,NULL,20);
INSERT INTO emp VALUES (7934,'MILLER','CLERK',7782,'82-01-11',1300,NULL,10);
commit;
📝 chown 명령어
파일이나 디렉토리의 소유자를 변경하는 명령어
change owner 의 약자
※ 리눅스에서 발생하는 거의 많은 문제들은 권한 문제들이 많음 파일이나 폴더에 대한 권한이 없어서 발생하는 문제들이 대부분
예제. emp.csv 의 소유자 확인
ls -l emp.csv
바로가기(링크수)
↑
-rw-r--r--. 1 root root 663 9월 19 15:08 emp.csv
↑ ↑ ↑ ↑ ↑ ↑
권한관련 부분 소유자 그룹 파일크기 수정시간 파일명
문제 1. oracle2 유저를 생성하기
useradd oracle2
id oracle2
문제 2. oracle2 유저의 패스워드를 oracle2라고 지정하기
passwd oracle2
문제 3. oracle2 유저로 접속하기
su - oracle2
# 다시 root로 돌아오기
su -
문제 4. /root/ 밑에 있는 emp.csv 를 /home/oracle2 밑에 copy 하기
cp /root/emp.csv /home/oracle2/emp.csv
문제 5. /home/oracle2 밑으로 이동해서 그 안에 있는 emp.csv 의 소유자가 누군지 확인하기
cd/home/oracle2
ls
ls -l emp.csv
문제 6. /home/oracle2 밑에 있는 emp.csv 의 소유자를 oracle2 로 변경하고 그룹도 oracle2 로 변경하기
chown oracle2:oracle2 emp.csv
ls -l emp.csv
root root 에서 oracle2 oracle2 로 바뀐 것 확인 가능
문제 7. /home/oracle2 밑에 있는 emp.csv의 소유자를 다시 root로 변경하고, 그룹도 root로 변경하기
chown root:root emp.csv
ls -l emp.csv
문제 8. 구글 코랩으로 접속해서 코랩에 기본적으로 올라가져 있는 파일의 소유자가 누군지 확인하기
문제 9. oracle3라는 유저를 생성하고 emp.csv의 소유자를 oracle2 로 변경하기
useradd oracle3
id oracle3
passwd oracle3
cp /root/emp.csv /home/oracle3/emp.csv
chown oracle3:oracle3 emp.csv
ls -l emp.csv
📝 chmod 명령어
파일이나 디렉토리의 권한을 변경하는 명령어
권한 관리표
번호 권한 대표문자 파일 디렉토리
4
읽기권한
r
읽기, 복사
디렉토리는 ls 명령어 가능
2
쓰기권한
w
수정
디렉토리는 파일 생성가능
1
실행권한
x
실행
디렉토리는 cd 로 접근가능
문제 1. emp.csv의 권한을 확인하기
cd
ls -l emp.csv
-rw- r-- r--. 1 root root 679 9월 19 13:53 emp.csv
^소유자의 권한 ^그룹에 대한 권한 ^기타 유저에 대한 권한
문제 2. emp.csv를 소유자 외에는 읽을 수 없도록 만들기
chmod u-rwx,g-rwx,o-rwx emp.csv
ls -l emp.csv
띄어쓰기 없기 붙여서 코드 실행해주면 위와 같이 모든 권한 다 빠진 것을 확인 가능
chmod u+rw emp.csv
ls -l emp.csv
문제 3. 이제 oracle 유저로 접속해서 /root/ 밑에 emp.csv를 cat 으로 열어보기
su - oracle
whoami
cd /root
문제 4. 다시 root로 접속해서 /root/밑에 있는 emp.csv를 /home/oracle/ 밑에 복사하기
su -
ls -l emp.csv
cp emp.csv /home/oracle/
문제 5. oracle 유저로 접속해서 /home/oracle 밑에 있는 emp.csv를 cat으로 열기
su - oracle
pwd
ls
ls -l emp.csv
cat emp.csv
문제 6. 다시 root로 접속해서 /home/oracle 밑에 있는 emp.csv 의 권한을 소유자가 아닌 다른 유저도 읽을 수 있도록 수정하기
su -
whoami
cd /home/oracle
ls
chmod u+rw,g+r,o+r emp.csv
ls -l emp.csv
문제 7. oracle 유저로 접속해서 /home/oracle 밑에 있는 emp.csv를 cat으로 보기
cat emp.csv
※ 숫자로 권한을 부여하고 회수하기
4
읽기권한
r
읽기, 복사
디렉토리는 ls 명령어 가능
2
쓰기권한
w
수정
디렉토리는 파일 생성가능
1
실행권한
x
실행
디렉토리는 cd 로 접근가능
문제 8. root 유저에서 /home/oracle 밑에 있는 emp.csv 파일의 권한을 다음과 같이 조정하기
소유자 : 읽기(4),쓰기(2),실행(1) 그룹 : 읽기(4),쓰기(2) 기타유저: 실행(1)
chmod u-rwx,g-rwx,o-rwx /home/oracle/emp.csv
chmod u+rwx,g+rw,o+r /home/oracle/emp.csv
ls -l /home/oracle/emp.csv
또는 다음과 같이 하면 됨
chmod 000 /home/oracle/emp.csv
ls -l emp.csv
chmod 761 /home/oracle/emp.csv
ls -l /home/oracle/emp.csv
문제 9. /home/oracle 밑에 emp.csv 의 권한이 다음과 같이 조정되게 하기
---x--x--x. 1 root root 679 9월 20 14:50 emp.csv
chmod 111 emp.csv
ls -l /home/oracle/emp.csv
문제 10. /home/oracle 밑에 있는 emp.csv 의 권한이 다음과 같이 조정되게하기