Db2 Warehouse on Cloud REST API 사용

「매뉴얼에 실려 있어~」
htps : //로 ゔぇぺぺr. 이 bm. 이 m/s들 c/해-d/85/아피/db2whc-v3/
네 네… 확실히 매뉴얼에 있습니다. 그러나 경험이 없는 사람에게는 매뉴얼을 봐도 깔끔합니다. (자신의 일)
그래서, 좀처럼 심플한 방법에 대해 샘플이 없었기 때문에 해 보았습니다.

준비하는 것.
  • Db2 Warehouse on Cloud
  • cURL 명령이 치는 환경. 아니면 REST 클라이언트 (Chrome의 경우 POSTMAN입니까? htps // ch 로메. 오, ぇ. 코 m / ぇ bs 잡아라 / 싶다 l / fo st man / fhbjg와 f ぃ jbd 게 hc dc b n c t도 p, Firefox는 RESTClient.

    전체 흐름

    이전에는 기본 인증을 이용할 수 있어 URL에 유저명과 패스워드를 포함하면 간단하게 액세스 할 수 있었습니다만, REST API의 버젼이 오르고, 액세스 토큰에 의한 인증으로 변경이 되고 있습니다.
    1. 액세스 토큰 얻기
    2. 획득한 액세스 토큰을 이용하여 REST API 실행

    이것뿐입니다. 이것뿐인데 샘플이 없다! 일본어…

    1. 액세스 토큰 얻기



    Every request must include the Authorization HTTP header with the value
    Bearer [access_token].
    An access token can be obtained with the/auth/tokens endpoint,

    네. 상쾌하기 때문에 우선 해보자.
    $ curl -X POST 'https://dashdb-xxxxxxxxxx.bluemix.net:8443/dbapi/v3/auth/tokens' -d '{"userid":"mikan", "password":"mikanpassword"}'
    

    결과
    {"userid":"mikan","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MzczNTc5OTIsInVzZXJOYW1lIjoibm9tYSIsImNvb2tpZSI6IiIsImlzc3VlIjoiaHR0cHM6Ly8xMC4xNDMuMTMzLjExMDo4ODgwLyJ9.RGV97DWU7aRlfxDw_QdtyRuEJoQiib_w0n7u4NFBNRc"} 
    

    이 임의의 문자열은 액세스 토큰입니다."token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MzczNTc5OTIsInVzZXJOYW1lIjoibm9tYSIsImNvb2tpZSI6IiIsImlzc3VlIjoiaHR0cHM6Ly8xMC4xNDMuMTMzLjExMDo4ODgwLyJ9.RGV97DWU7aRlfxDw_QdtyRuEJoQiib_w0n7u4NFBNRc"
    그건 그렇고. 이 액세스 토큰에는 기한이 있습니다. 아마도 1시간입니다.

    2. 획득한 액세스 토큰을 사용하여 REST API 실행



    바로 해보자.

    우선 데이터베이스 모니터에서

    GET/monitor
    $ curl -X GET 'https://dashdb-xxxxxxxxxx.bluemix.net:8443/dbapi/v3/monitor' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MzczNTc5OTIsInVzZXJOYW1lIjoibm9tYSIsImNvb2tpZSI6IiIsImlzc3VlIjoiaHR0cHM6Ly8xMC4xNDMuMTMzLjExMDo4ODgwLyJ9.RGV97DWU7aRlfxDw_QdtyRuEJoQiib_w0n7u4NFBNRc' -d '{"userid":"mikan", "password":"mikanpassword"}'
    

    결과
    {"authentication_service":"online","messages":"","database_service":"online"}
    

    스토리지 사용량 확인

    GET/monitor/storage
    $ curl -X GET 'https://dashdb-xxxxxxxxxx.bluemix.net:8443/dbapi/v3/monitor/storage' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MzczNTc5OTIsInVzZXJOYW1lIjoibm9tYSIsImNvb2tpZSI6IiIsImlzc3VlIjoiaHR0cHM6Ly8xMC4xNDMuMTMzLjExMDo4ODgwLyJ9.RGV97DWU7aRlfxDw_QdtyRuEJoQiib_w0n7u4NFBNRc' 
    

    ※한 번 토큰이 인증되면 다음 번부터 "userid"와 "password"는 생략 가능하며, 토큰만으로 인증 OK입니다.
    다만 기한이 있으므로 주의.

    결과
    {"capacity_kb":4128243712,"usage":59,"name":"Database storage","available_kb":1680867328,"used_kb":2446327808,"collected_at":1537357602048}
    

    라는 느낌으로 URL을 목적에 따라 변경하면 됩니다.
    조금 결과의 JSON이 보기 어렵다든가 일본어가 화할 수 있는 분은 최초로 소개한 REST 클라이언트를 이용하면 락틴입니다.

    htps : // 아동 s. 어쩌면. 오 rg / 자 / 푹신 푹신 x / 아동 / 레 stc ぃ 엔 t

    3.SQL을 실행해 보자!



    SQL의 실행은 조금 바뀌고, 실행해 결과가 나오는 것이 아니라, 실행하면 결과 세트가 일단 서랍에 들어가,
    서랍을 지정하여 데이터를 다운로드하는 2단계 작업이 필요합니다.

    우선 SQL 실행입니다.



    POST/sql_jobs

    SQL은 다음 예제의 JSON으로 POST합니다.
    {
    "commands":"select * from tokyo;",    --- 実行したいSQLクエリ
    "limit":10,                           --- 結果セットの取得行数の指定(デフォルト1000
    "separator":";",                      --- SQLの終端文字
    "stop_on_error":"no"                  --- エラー発生時にジョブを止めるかどうか
    }
    

    다음과 같이 실행합니다.
    $ curl -X POST 'https://dashdb-xxxxxxxxxx.bluemix.net:8443/dbapi/v3/sql_jobs' -H 'Content-type: application/json' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MzczNTc5OTIsInVzZXJOYW1lIjoibm9tYSIsImNvb2tpZSI6IiIsImlzc3VlIjoiaHR0cHM6Ly8xMC4xNDMuMTMzLjExMDo4ODgwLyJ9.RGV97DWU7aRlfxDw_QdtyRuEJoQiib_w0n7u4NFBNRc' -d '{"commands":"SELECT * FROM TOKYO;","limit":10,"separator":";","stop_on_error":"no"}'
    

    JSON을 POST하기 위해 헤더에 Content-type: application/json을 붙이지 않으면 잘 작동하지 않았습니다.
    결과
    {"commands_count":1,"limit":10,"id":"1537436952027_1854825181_-1644888840"}
    

    이 결과에 있는 1537436952027_1854825181_-1644888840이 결과 세트가 들어 있는 서랍의 번호가 됩니다.

    서랍 번호를 지정하여 결과를 검색합니다.



    GET/sql_jobs/{id}
    $ curl -X GET 'https://dashdb-enterprise4-yp-dal09-25.services.dal.bluemix.net:8443/dbapi/v3/sql_jobs/1537436952027_1854825181_-1644888840' -H 'Content-type: application/json' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MzczNTc5OTIsInVzZXJOYW1lIjoibm9tYSIsImNvb2tpZSI6IiIsImlzc3VlIjoiaHR0cHM6Ly8xMC4xNDMuMTMzLjExMDo4ODgwLyJ9.RGV97DWU7aRlfxDw_QdtyRuEJoQiib_w0n7u4NFBNRc'
    

    결과
    {"id":"1537436952027_1854825181_-1644888840","results":[{"rows_affected":0,"rows_count":10,"runtime_seconds":19,"columns":["\u5e74\u6708\u65e5\u6642","\u6c17\u6e29","\u6c17\u6e29\u54c1\u8cea\u60c5\u5831","\u6c17\u6e29\u5747\u8cea\u756a\u53f7","\u964d\u6c34\u91cf","\u964d\u6c34\u91cf\u73fe\u8c61\u306a\u3057\u60c5\u5831","\u964d\u6c34\u91cf\u54c1\u8cea\u60c5\u5831","\u964d\u6c34\u91cf\u5747\u8cea\u756a\u53f7"],"limit":10,"last_inserted":0,"rows":[["2013-2-8 7:00:00","4.1","8","1","0.0","1","8","1"],["2013-2-8 8:00:00","3.8","8","1","0.0","1","8","1"],["2013-2-8 9:00:00","3.9","8","1","0.0","1","8","1"],["2013-2-8 10:00:00","4.0","8","1","0.0","1","8","1"],["2013-2-8 11:00:00","4.9","8","1","0.0","1","8","1"],["2013-2-8 12:00:00","4.8","8","1","0.0","1","8","1"],["2013-2-8 13:00:00","5.0","8","1","0.0","1","8","1"],["2013-2-8 14:00:00","6.2","8","1","0.0","1","8","1"],["2013-2-8 15:00:00","6.0","8","1","0.0","1","8","1"],["2013-2-8 16:00:00","5.9","8","1","0.0","1","8","1"]],"error":"","command":"SELECT * FROM TOKYO"}],"status":"completed"}
    

    일본어 열 이름이 코드 포인트가되어 버렸습니다 ...
    REST 도구로 보면 이런 느낌입니다.



    그 밖에도 데이터의 로드 등 다양한 RSET API가 준비되어 있기 때문에 보치보치 놀아 보려고 생각합니다.

    참고 URL
    IBM Db2 Warehouse on Cloud REST API 버전 3

    Query Cloud Db2 Using REST APIs
    htps : //에서 ゔぇぺぺr. 이 bm. 이 m/s들 c/해-d/85/아피/db2whc-v3
  • 좋은 웹페이지 즐겨찾기