Git Product home page Git Product logo

c2m's Introduction

CSV 데이터를 MySQL 테이블로 옮기는 콘솔 애플리케이션

이 프로젝트는 디캠프 주최로 총 30시간 동안 진행된 'D.CLASS Be 개발자!' 클래스의 미니 해커톤 데이 때, 많은 학생들이 질문했던 내용에 대한 대답이다. 제목 그대로다. 데이터 때문에 더 나아가지 못하고 멈추지 말았으면 좋겠다는 생각에 후다닥 만들었다.

1. 설치

1.1. Be 개발자 수업 참여자

다운로드 받고 압축을 푼다(윈도우즈의 콘솔에서는 한글이 깨질 수 있다).

1.2. 컴포저를 아는 사용자

$ git clone [email protected]:appkr/c2m.git 
# (or git clone https://github.com/appkr/l5essential.git)
$ composer install

2. 명령어 목록

압축을 푼, 또는 클론한 디렉터리로 이동하고, php c2m 명령을 실행한다.

콘솔에서 php 명령이 먹지 않는다면, 1) PATH 환경 변수를 설정하거나, 2) 전체 경로(예: /Application/mamp/php/php c2m, C:\Bitnami\wamp\php\php c2m)로 실행할 수도 있다.

그림 1

csv:import, table:create, table:drop, table:select 명령을 각각 살펴 보기 바란다. 살펴 보는 방법은

$ cd c2m
$ php c2m help csv:import

처럼 $ php c2m help 명령을 입력하면 된다. 각 명령에 전달해야 하는 인자와 옵션을 상세히 설명하고 있다. 참고로 모든 콘솔 옵션은 --옵션이름="옵션값" 형식으로 쓴다.

그림 2

3. 테이블 생성 명령_ php c2m table:create 만들테이블이름 --schema=테이블스키마

CSV 파일을 MySQL 테이블로 가져오려면, CSV 파일을 옮겨 담을 수 있는 MySQL 테이블을 먼저 만들어야 한다. 이 프로젝트에 포함된 예제에서는 CSV 파일 형식이 다음과 같다고 가정한다.

# example/example.csv 

"Title","Description","Author","Created"
"Foo","Lorem ipsum dolor sit amet, ...!","[email protected]","2016-04-26 00:00:00"
"Bar","Quibusdam sapiente possimus  ...","[email protected]","2016-04-26 12:00:00"

CSV 사용시 주의점

문자열 안에도 쉼표가 있을 수 있다. 그러므로, CSV의 각 값들은 모두 따옴표로 감싸야 한다.

이제 이 CSV 데이터에 맞추어 example 테이블을 만든다.

$ php c2m table:create example --schema="title:string,description:text,author:string,created:datetime"

그림 3

--schema옵션은 컬럼이름:컬럼형식으로 쓴다. 여러 개의 컬럼은 콤마(,)로 구분한다. 사용할 수 있는 컬럼 형식은 다음과 같다.

  • boolean_ MySQL의 TINYINT
  • date
  • datetime
  • float
  • integer
  • string_ MySQL의 VARCHAR
  • text
  • timestamp

4. CSV 임포트 명령_ php c2m csv:import CSV파일경로 테이블이름

이 프로젝트는 3번에서 봤던 example/example.csv 예제 파일을 포함하고 있다.

$ php c2m csv:import example/example.csv example

그림 4

5. 테이블 조회_ php c2m table:select 조회할테이블이름 --옵션들

임포트가 잘 되었는지 확인한다.

$ php c2m table:select example

table:select 명령에서 사용할 수 있는 옵션은 다음과 같다.

  • column_ 조회할 컬럼을 선택한다(기본값: *).
  • sort_ 정렬 기준으로 사용할 컬럼을 선택한다(기본값: id).
  • direction_ 정렬 방향을 선택한다(기본값: asc).
  • limit_ 한번에 조회할 열 개수를 선택한다(기본값: 10).
  • page_ 조회할 페이지를 선택한다(기본값: 1).

옵션을 전부 종합한 사용 예는 다음과 같다.

$ php c2m table:select example --column="id,title,author" --limit=2 --page=1 --sort=title --direction=desc

그림 5

6. 테이블 삭제_ php c2m table:drop 삭제할테이블이름

개발할 때는 삭제와 다시 만들기를 여러번 반복하게 되는데, 이때 이 명령을 편리하게 사용할 수 있다.

$ php c2m table:drop example

그림 6

7. MySQL 접속 설정

Be 개발자 강의에 맞춰서 데이터베이스는 opentutorials, 사용자는 root, 비밀번호는 111111로 기본 셋팅되어있다. 이 값과 다르다면, config/database.php를 열어서 값을 바꾼다.

// config/database.php

<?php

return [
    'driver' => 'mysql',
    'host' => 'localhost',
    'port' => '3306',
    'database' => 'opentutorials',    # 데이터베이스 이름
    'username' => 'homestead',        # MySQL 사용자 이름
    'password' => 'secret',           # MySQL 접속 비밀번호
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => 'innodb',
];

8. 라이선스

MIT MIT는 LICENSE 파일의 저작자 정보를 바꾸지 않는다면, 수정, 재배포, 상업적 이용이 모두 가능한 오픈소스 라이선스다.

Happy Coding~ \^^/

c2m's People

Contributors

appkr avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.