데이터 작업: jq vs Miller 응답: JSON 파일을 SQLite 데이터베이스로 변환하는 방법

9161 단어 productivity
최근에 700mb의 json 파일을 만났습니다. 버그의 출처를 찾기 위해 작업과 탐색을 해야 합니다.간혹 잃어버린 필드와 다른 속성 사이의 관계를 찾아야 합니다.디버깅에 집중할 수 있는 모드를 찾으세요.
나의 첫 번째 시도는 사실상 간단한 노드였다.js 스크립트, 이 스크립트는.파일을 읽고 vanilla JS 매핑/감소/요약 JSON을 사용합니다.세션 간에 필요에 따라 노드 REPL과 to.save.load를 시작하는 것이 상당히 쉽기 때문에 이것은 좋은 출발점이다.그러나 나는 JSON 파일의 단일 루틴 해석과 관련된 기다림을 좋아하지 않는다.가장 유연한 선택이지만 가장 수동적인 느낌이다.
나는 JSON의 상용 도구를 처리하는데,

스토란 / jq


명령줄 JSON 프로세서


jq


jq는 경량급이고 유연한 명령행 JSON 프로세서입니다.

Unix:
창:
만약 당신이 jq를 사용하는 것을 배우고 싶다면,
https://stedolan.github.io/jq . 이것
문서는 저장소의 문서/폴더에서 생성됩니다.
너도 인터넷에서 해 볼 수 있다jqplay.org.
만약 당신이 jq를 침입하고 싶다면 안심하십시오. 그러나 그것의 내부 구조에 주의해야 합니다
현재 좋은 기록이 없다.안전모 하나랑 하나랑.
삽.또한 위키: https://github.com/stedolan/jq/wiki
요리책, 고급 화제의 토론, 내부 구조,
공사를 발표하는 등등.
원본 tarball과 구축된 실행 가능한 버전은
홈 페이지 및github 게시 페이지https://github.com/stedolan/jq/releases
최신git에서 직접 구축하려면 flex가 필요합니다
bison(3.0 또는 업데이트 버전),libtool,make,automake,autoconf가 설치되었습니다.
regexp 지원을 받으려면 Oniguruma를 설치하거나 복제해야 합니다.
View on GitHub
C 언어로 작성된 작업실로 유용한 동사가 많아 한 줄의 프로그램으로 JSON을 해석하고 정리할 수 있다.
이런 상황에서 jq의 속도는 매우 빠르지만 여전히 단선정이다.
반대로 나는 비교적 새로운 도구로 방향을 바꾸었다

존 클 / 밀러


Miller는 awk,sed,cut,join,sort와 유사하며 이름 인덱스 데이터, 예를 들어 CSV,TSV와 표 JSON에 사용된다.


밀러가 뭐예요?


Miller는 awk,sed,cut,join,sort와 유사하며 CSV,TSV,JSON,JSON 줄과 위치 인덱스 등 데이터 형식에 사용된다.

밀러는 나를 위해 무엇을 할 수 있습니까?


Miller를 사용하면 위치를 계산하지 않고 이름 필드를 사용할 수 있습니다.
CSV, TSV, JSON, JSON 행 및
위치별 색인.그리고 실행 중 새 필드를 추가할 수 있습니다
기존 필드, 삭제 필드, 정렬, 집합 함수
예쁜 프린트 등등.

  • Miller는 키 값 쌍의 데이터를 처리합니다.
    Unix 도구는 정수 인덱스 필드를 조작합니다.
    후자는 수조이고 밀러의 자연 데이터 구조는
    삽입 순서 해시 맵.

  • Miller는 다양한 데이터 형식 처리
    익숙한 CSV, TSV 및 JSON/JSON 행을 포함하되 이에 국한되지 않음
    (Miller는 위치 색인 데이터도 처리할 수 있습니다!)
  • 위의 그림에서 당신은...
    View on GitHub
    이것은 jq의 용도와 비슷하다.내가 밀러를 시도했을 때, 나는 그것의 계수 속도가 매우 빠르다는 것을 알아차렸다.나는 Miller 문서를 읽었고 https://miller.readthedocs.io/en/latest/cpu/에서 Miller는 보통 다중 라인이라는 것을 발견했다. 이것은 Go와 채널 사용에서 이루어졌기 때문이다.이것은 Miller가 어떤 임무에서 jq보다 우위를 가지게 할 수 있고 이런 임무에서 합병성이 작용할 수 있다.
    특히 CSV, JSON 또는 다른 형식의 데이터를 처리할 수 있기 때문에 밀러를 깊이 연구할 계획이다.그 밖에 더욱 복잡한 데이터 조작 흐름에 대해 말하자면, 이후에 단독 고루틴 링크를 발표하는 것은 큰 승리인 것 같다.
    내가 사용하고자 하는 또 다른 도구는 sqlite입니다. json 확장자는readfile 확장자와 결합됩니다.이것은 내가 발견한 이 문제/답안의 계발을 받은 것이다

    대답: JSON 파일을 SQLite 데이터베이스로 변환하는 방법


    20년 6월 27일
    16

    SQLite의 JSON1 extensionreadfile CLI 도구의 sqlite3 extension를 CSV 또는 타사 도구 없이 사용할 수 있습니다.
    입력 파일이 양호한 형식의 JSON 파일인 경우, 예를 들어 배열의 예로 들 수 있습니다.
    [
    {"uri":"/","user_agent":"example1"},

    Open Full Answer
    최종적으로 제 JSON 파일에서 sql을 실행하는 빠른 방법이 되었습니다.다음과 같이 sqlite3 REPL에서 sql 문을 실행합니다.
    INSERT INTO my_table SELECT 
      json_extract(value, '$.user_agent')
    FROM json_each(readfile('my_data.json'));
    
    나는 줄마다 내가 흥미를 느끼는 JSON 키를 기반으로 SQL 테이블을 만들 수 있다.그러나, 이것은 나의 데이터에 적합하지 않다. 왜냐하면 많은 줄에 공공 키가 부족하기 때문에, 나는 줄이 드물기를 원하지 않는다.그 밖에 나는 SQL로 자신의 동사를 작성해야 한다. Miller는 기존의 동사를 많이 제공했다.그러나 sqlite3이 답을 제공하는 속도가 상당히 빠르기 때문에 이것은 조회 최적화의 결과일 수 있다.
    해보고 싶어요.

    duckdb / duckdb


    DuckDB는 프로세스 내 SQL OLAP 데이터베이스 관리 시스템입니다.



     




    DuckDB


    DuckDB는 고성능 분석 데이터베이스 시스템이다.그것의 설계 목적은 신속하고 믿음직하며 사용하기 쉽다는 것이다.DuckDB는 기본 SQL보다 훨씬 많은 SQL 사투리를 지원합니다.DuckDB는 임의의 하위 조회, 창 함수, 정렬 규칙, 복잡한 유형 (그룹, 구조) 등을 지원합니다.DuckDB 대상에 대한 자세한 내용은 the Why DuckDB page on our website를 참조하십시오.

    장치


    DuckDB를 설치하고 사용하려면 our website를 참조하여 설치 및 사용 지침을 참조하십시오.

    데이터 가져오기


    CSV 파일 및 플라워 파일의 경우 데이터 가져오기는 FROM 자문의 파일을 참조하는 것처럼 간단합니다.
    내 파일을 선택합니다.csv'
    내 파일을 선택합니다.꽃무늬 마루 맞추기;
    자세한 내용은 Data Import 섹션을 참조하십시오.

    SQL 참조


    website에는 DuckDB에서 사용할 수 있는 함수와 SQL 구조에 대한 참조가 포함되어 있습니다.

    발전시키다


    DuckDB는 개발의 경우CMake...
    View on GitHub
    같은 이유로, 나는 sqlite3을 시도했지만, 결국 시도하지 않았다. 왜냐하면 나는 json 확장이 있기 때문이다. 이것은 먼저 json을 csv로 변환한 다음에duckdb를 가져오는 것보다 쉽다.

    좋은 웹페이지 즐겨찾기