8-3. Database Operations on the Command Line

가짜연구소 dsf-2기로 활동중이며, 데이터 엔지니어 8코스-3) Database Operations on the Command Line 를 수강하고 그에 관련 내용을 적어보았다.

csvkit 라이브러리가 제공해야 하는 모든 것에 대해 더 깊이 알아봅시다. 특히 테이블 생성, 데이터 풀 및 다양한 ETL 변환을 포함하여 명령줄에서 수행할 수 있는 데이터베이스 작업에 중점을 둡니다.

🌱 출처 : Datacamp data enigneering track
모르는 부분이나 헷갈렸던 부분은 계속 추가될 수 있다!

Database Operations on the Command Line
1. Pulling data from database
2. Manipulationg data using SQL syntax
3. Pushing data back to database

1. Pulling data from database

sql2csv

  • csvkit 라이브러리에 있는 명령
  • MS SQL, mySQL, Oracle, Postgres 및 Sqlite 를 포함하여 널리 사용되는 다양한 SQL 데이터베이스에 엑세스

Pgadmin 같은 데이터베이스 클라이언트를 거치지 않고서도 SQL 명령 실행가능하다.

sql2csv -h

가독성을 위해 백슬래시를 사용하여 여러 줄로 나눕니다.

sql2csv -db "sqlite:///SpotifyDatabase.db" \ --query "SELECT * FROM Spotify_Popularity" \ > Spotify_Popularity.csv
  1. 데이터베이스에 연결하는 방법
  • --db 사용함
  • SQLite: sqlite:/// .db
  • Postgres & MySQL: postgres:/// or mysql:// 하지만 마지막에 .db 확장자 필요없음.
  1. SQL 쿼리 전달
  • --query 인수사용
  • 데이터베이스마다 SQL 구문이 조금씩 다름
  • 쿼리의 길이와 복잡성에 관계없이 한줄로 써야한다.
  1. output 저장
  • > 인수 사용

역추적 및 로그를 인쇄하기 위해서는 sql2csv -v인수 사용한다.

2. Manipulationg data using SQL syntax

csvsql

  • 내부적으로 csvsql이 메모리 내 sql을 생성하기 때문에 작동함
  • 처리 중인 전체 csv파일을 임시로 호스팅하는 데이터베이스
  • 편리하나 대용량 파일처리나 복잡한 sql에는 적합하지 않음.

아래는 데이터의 첫 번째 행을 인쇄한다.

csvsql --query "SELECT * FROM Spotify_MusicAttributes LIMIT 1" \ Spotify_MusicAttributes.csv | csvlook

csvsql 먼저 쿼리를 가져옵니다. 이 쿼리는 데이터베이스에 로드된 테이블인 것처럼 작성된다.

현재 파일 디렉토리를 기준으로 참조하는 데이터 파일의 위치를 정확히 알려줘야한다. csvsql은 데이터 파일을 찾을 위치를 알지 못하기 때문이다.

  • | csvlook 을 사용하여 더 가독성있게 볼 수 있음
  • 조인 하여 여러 csv 를 사용가능
csvsql --query "SELECT * FROM file_a INNER JOIN file_b..." file_a.csv file_

3. Pushing data back to database

데이터를 데이터베이스에 다시 푸시하는 방법을 알아봅시다.

csvsql

  • sql문이 있는 로컬 csv 데이터를 데이터베이스에 다시 업로드 및 푸시함.
  • --insert
  • --db : 데이터베이스 연결
  • --no-inference&-no-constraints
csvsql --no-inference --no-constraints \       --db "sqlite:///SpotifyDatabase.db" \       --insert Spotify_MusicAttributes

일반적으로 새 파일을 데이터베이스의 테이블로 업로드하는 데는 여러 단계가 있다.

SQL 클라이언트 또는 사용자 인터페이스에 따라 테이블 스키마를 지정하고 테이블에 키를 입력한 다음 행별로 데이터를 씁니다.

insert옵션은 db옵션이 있어야만 사용가능 하다.

csvsql은 숫자, 날짜 또는 문자열처럼 보이는 모든 열을 텍스트로 처리 합니다.

-no-constraints 의 경우 문자 길이 제한 없이 테이블을 생성할 수 있습니다. 제한은 특히 큰 데이터 테이블에 유용하며 삽입 프로세스에 속도를 높인다.

오류를 발생시키지 않고 모든 null 데이터를 포함하는 열을 생성할 수 있다.

좋은 웹페이지 즐겨찾기