이러한 활동으로 컨퍼런스를 후원할 때는 보통 참석자에게 배지를 스캔하여 Couchbase 업데이트를 보낼 수 있는지 물어봅니다. 그래서 그렇게 했습니다. 그리고 때로는 정보를 쉽게 복구할 수 있지만 때로는 약간 까다로울 때도 있습니다. 여기에는 QR 코드에 VC카드가 포함되어 있었습니다. 아시다시피 스캔은 회의의 통화이기 때문에 연락처 정보와 귀중한 정보를 담는 것이 목적입니다. 덕분에 다음 해에 더 많은 아이스크림을 가지고 다시 돌아올 수 있습니다.
어쨌든 많은 수의 VC카드를 수집하게 되었지만, 이를 유비쿼터스 마케팅 형식인 CSV에 넣는 것은 어려웠습니다. 그렇다면 데이터를 조작해야 할 때는 어떻게 하나요? Couchbase Shell을 사용합니다.
카우치베이스 쉘, 쉘 예!
카우치베이스 셸 (cbsh)는 현대적이고 생산적이며 재미있는 Couchbase Server 및 Capella(클라우드 DBaaS)용 셸입니다. 소스 코드와 설치 방법은 리포지토리에서 확인할 수 있습니다. Readme.
저는 직접 복제하고 빌드하여 설치했습니다:
|
1 2 3 |
git 복제 https://github.com/couchbaselabs/couchbase-shell cd 카우치베이스-shell 화물 설치 --경로 . |
다음이 필요합니다. Rust 툴체인 를 설치했는데, Couchbase Shell은 제가 가장 좋아하는 셸을 기반으로 Rust로 작성되었기 때문입니다, nushell.
설치가 완료되면 다음과 같이 입력하여 실행할 수 있습니다. cbsh. 먼저 Couchbase 연결을 구성하라는 메시지가 표시됩니다. Capella 관리 인터페이스를 사용하는 경우 모든 필수 정보는 연결 탭을 클릭합니다.
누쉘 <3 JSON
참고로 제 VC카드는 이렇게 생겼습니다:
|
1 2 3 4 5 6 |
시작:VCARD 버전:2.1 N:도긴;Laurent;;; ORG:카우치베이스 이메일;인터넷:laurent.doguin@카우치베이스.com END:VCARD |
이를 JSON으로 변환할 수 있는 많은 노드 라이브러리가 있습니다. vcard-json. 따라서 다음과 같이 실행하면 vcard2json.js 노드를 호출하면 모든 VCard 콘텐츠가 JSON 객체로 포함된 JSON 배열을 가져옵니다.
훌륭하지만 어떻게 쉽게 조작할 수 있을까요? Cbsh는 누쉘을 기반으로하기 때문에 다음과 같은 모든 좋은 점을 얻을 수 있습니다. json에서 명령 또는 어디 필터와 JSON 선택. 이제 nushell에서 제공하는 구조화된 데이터 출력을 통해 단계별로 어떻게 작동하는지 살펴보겠습니다:
|
1 2 3 4 5 |
👤 Laurent 도긴 🏠 아카펠라 > 노드 vcard2json.js [{"name":{"성":"도긴","name":"Laurent","추가 이름":"","접두사":"","접미사":""},"조직":"Couchbase","이메일":[{"isDefault":false,"valueInfo":{},"value":"laurentdoguin@couchbase.com"}]},{"name":{"성":"이","name":"사람","추가 이름":"","접두사":"","접미사":""},"조직":"DoesNotWorkAtCouchbase","이메일":[{"isDefault":false,"valueInfo":{},"value":"thiperson@notcouchbase.com"}]}] |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
👤 Laurent 도긴 🏠 아카펠라 > 노드 vcard2json.js | 에서 json ╭───┬──────────────────────────────┬────────────────────────┬─────────────────────────────────────────────────────────────────────╮ │ # │ 이름 │ 조직 │ 이메일 │ ├───┼──────────────────────────────┼────────────────────────┼─────────────────────────────────────────────────────────────────────┤ │ 0 │ ╭────────────────┬─────────╮ │ 카우치베이스 │ ╭───┬───────────┬───────────────────┬─────────────────────────────╮ │ │ │ │ 성 │ 도긴 │ │ │ │ # │ isDefault │ valueInfo │ value │ │ │ │ │ │ 이름 │ Laurent │ │ │ ├───┼───────────┼───────────────────┼─────────────────────────────┤ │ │ │ │ 추가 이름 │ │ │ │ │ 0 │ false │ {기록 0 필드} │ 로랑도긴@카우치베이스.com │ │ │ │ │ 접두사 │ │ │ │ ╰───┴───────────┴───────────────────┴─────────────────────────────╯ │ │ │ │ 접미사 │ │ │ │ │ │ │ ╰────────────────┴─────────╯ │ │ │ │ 1 │ ╭────────────────┬────────╮ │ DoesNotWorkAtCouchbase │ ╭───┬───────────┬───────────────────┬────────────────────────────╮ │ │ │ │ 성 │ 이 │ │ │ │ # │ isDefault │ valueInfo │ value │ │ │ │ │ │ 이름 │ 사람 │ │ │ ├───┼───────────┼───────────────────┼────────────────────────────┤ │ │ │ │ 추가 이름 │ │ │ │ │ 0 │ false │ {기록 0 필드} │ thiperson@notcouchbase.com │ │ │ │ │ 접두사 │ │ │ │ ╰───┴───────────┴───────────────────┴────────────────────────────╯ │ │ │ │ 접미사 │ │ │ │ │ │ │ ╰────────────────┴────────╯ │ │ │ ╰───┴──────────────────────────────┴────────────────────────┴─────────────────────────────────────────────────────────────────────╯ |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
👤 Laurent 도긴 🏠 아카펠라 > 노드 vcard2json.js | 에서 json | 어디 조직 != '카우치베이스' ╭───┬─────────────────────────────┬────────────────────────┬────────────────────────────────────────────────────────────────────╮ │ # │ 이름 │ 조직 │ 이메일 │ ├───┼─────────────────────────────┼────────────────────────┼────────────────────────────────────────────────────────────────────┤ │ 0 │ ╭────────────────┬────────╮ │ DoesNotWorkAtCouchbase │ ╭───┬───────────┬───────────────────┬────────────────────────────╮ │ │ │ │ 성 │ 이 │ │ │ │ # │ isDefault │ valueInfo │ value │ │ │ │ │ │ 이름 │ 사람 │ │ │ ├───┼───────────┼───────────────────┼────────────────────────────┤ │ │ │ │ 추가 이름 │ │ │ │ │ 0 │ false │ {기록 0 필드} │ thiperson@notcouchbase.com │ │ │ │ │ 접두사 │ │ │ │ ╰───┴───────────┴───────────────────┴────────────────────────────╯ │ │ │ │ 접미사 │ │ │ │ │ │ │ ╰────────────────┴────────╯ │ │ │ ╰───┴─────────────────────────────┴────────────────────────┴────────────────────────────────────────────────────────────────────╯ |
|
1 2 3 4 5 6 7 |
👤 Laurent 도긴 🏠 아카펠라 > 노드 vcard2json.js | 에서 json | 어디 조직 != '카우치베이스' | 선택 이름.이름 이름.성 조직 이메일.0.value ╭───┬───────────┬──────────────┬────────────────────────┬────────────────────────────╮ │ # │ 이름_이름 │ 이름_성 │ 조직 │ 이메일_0_값 │ ├───┼───────────┼──────────────┼────────────────────────┼────────────────────────────┤ │ 0 │ 사람 │ 이 │ DoesNotWorkAtCouchbase │ thiperson@notcouchbase.com │ ╰───┴───────────┴──────────────┴────────────────────────┴────────────────────────────╯ |
이제 데이터가 준비되고 정리되었으니 이 데이터로 무엇을 할 수 있나요? 이 데이터를 다음과 같이 CSV 파일에 쓸 수 있습니다:
|
1 |
> 노드 vcard2json.js | 에서 json | 어디 조직 != '카우치베이스' | 선택 이름.이름 이름.성 조직 이메일.0.value | 에 csv| 저장 연락처.csv |
Couchbase에 쓸 수도 있습니다. 이미 자격 증명을 모두 설정했습니다. 첫 번째 명령은 버킷과 기본 범위 및 컬렉션을 선택합니다. 두 번째 명령은 JSON 배열을 반복하고, 임의의 UUID를 생성하고, 콘텐츠를 콘텐츠 열 아래에 래핑하고, 생성된 UUID로 ID 열을 추가한 다음, 그 결과를 Couchbase에 삽입합니다.
|
1 2 3 |
👤 Laurent 도긴 🏠 아카펠라 > cb-환경 버킷 vcard |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
👤 Laurent 도긴 🏠 아카펠라 in ☁️ vcard._기본값._기본값 > 노드 vcard2json.js | 에서 json | 어디 조직 != '카우치베이스' |선택 이름.이름 이름.성 조직 이메일.0.value |이름 바꾸기 이름 성 조직 이메일 | 각 { |it| let uuid = {무작위 uuid}; $it | wrap 콘텐츠| 삽입 id $uuid | doc 업서트 } ╭───┬───────────────────────────────────────────────────────────╮ │ 0 │ ╭───┬───────────┬─────────┬────────┬──────────┬─────────╮ │ │ │ │ # │ 처리 │ 성공 │ 실패 │ 실패 │ 클러스터 │ │ │ │ │ ├───┼───────────┼─────────┼────────┼──────────┼─────────┤ │ │ │ │ 0 │ 1 │ 1 │ 0 │ │ 아카펠라 │ │ │ │ ╰───┴───────────┴─────────┴────────┴──────────┴─────────╯ │ │ 1 │ ╭───┬───────────┬─────────┬────────┬──────────┬─────────╮ │ │ │ │ # │ 처리 │ 성공 │ 실패 │ 실패 │ 클러스터 │ │ │ │ │ ├───┼───────────┼─────────┼────────┼──────────┼─────────┤ │ │ │ │ 0 │ 1 │ 1 │ 0 │ │ 아카펠라 │ │ │ │ ╰───┴───────────┴─────────┴────────┴──────────┴─────────╯ │ ╰───┴───────────────────────────────────────────────────────────╯ |
그리고 작동 여부를 확인하기 위해 SQL++로 데이터를 직접 쿼리할 수 있습니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
👤 Laurent 도긴 🏠 아카펠라 in ☁️ vcard._기본값._기본값 > 쿼리 "`vcard`에서 * SELECT *" ╭───┬────────────────────────────────────────────────┬─────────╮ │ # │ vcard │ 클러스터 │ ├───┼────────────────────────────────────────────────┼─────────┤ │ 0 │ ╭──────────────┬─────────────────────────────╮ │ 아카펠라 │ │ │ │ 이름 │ Person1 │ │ │ │ │ │ 성 │ LastNa │ │ │ │ │ │ 조직 │ Organisat │ │ │ │ │ │ 이메일 │ person1lastna@카우치베이스.com │ │ │ │ │ ╰──────────────┴─────────────────────────────╯ │ │ │ 1 │ ╭──────────────┬────────────────────────────╮ │ 아카펠라 │ │ │ │ 이름 │ 사람 │ │ │ │ │ │ 성 │ 이 │ │ │ │ │ │ 조직 │ DoesNotWorkAtCouchbase │ │ │ │ │ │ 이메일 │ thiperson@notcouchbase.com │ │ │ │ │ ╰──────────────┴────────────────────────────╯ │ │ ╰───┴────────────────────────────────────────────────┴─────────╯ |
여기까지 Couchbase Shell을 사용하여 데이터를 조작하고, 변환하고, Couchabse로 가져오는 실용적인 예시입니다. 하지만 다른 용도로도 많이 사용하실 수 있습니다! 어떤 것을 가장 좋아하시나요?