SpreadSheet에서 CloudSQL (MySQL)에 연결하는 방법

7061 단어 cloudsqlspreadsheet

장점



서버측 API나 클라이언트측을 만들 필요가 없기 때문에, 우선 손쉽게 관리 화면을 만들고 싶을 때에 편리.

적합하지 않은 점


  • 너무 많은 데이터가 있으면 GAS와 SpreadSheet를 견딜 수 없습니다.
  • 처리 속도 개선은 어렵다.

  • 전 자료



    ぇぺぺrs. 오, ぇ. 코 m / 아 ps-sc 리 pt / 구이 s / jdbc
    이쪽을 일본어로 해, 자신이 망설인 곳을 보전하고 있습니다.

    준비


  • 한 번 정도 GAS를 쓴 적 있다.
  • CloudSQL에서 DB를 생성합니다.
  • CloudSQL의 사용자명과 패스워드와 DB명은 파악해 둔다.
  • 몇 가지 데이터가 포함되어 있습니다

  • IP 주소 허용



    다음 주소를 CloudSQL에 액세스할 수 있습니다.
    64.18.0.0/20
    64.233.160.0/19
    66.102.0.0/20
    66.249.80.0/20
    72.14.192.0/18
    74.125.0.0/16
    173.194.0.0/16
    207.126.144.0/20
    209.85.128.0/17
    216.239.32.0/19
    

    GCP 콘솔에서라면 하나씩 밖에 할 수 없어, 매우 귀찮기 때문에, gcloud 커멘드를 사용합니다.
    sql instances patch [インスタンスID] --authorized-networks=64.18.0.0/20,64.233.160.0/19,66.102.0.0/20,66.249.80.0/20,72.14.192.0/18,74.125.0.0/16,173.194.0.0/16,207.126.144.0/20,209.85.128.0/17,216.239.32.0/19 --project [プロジェクト名]
    

    인스턴스 ID는 이것입니다.


    프로젝트 이름은 GCP의 프로젝트 이름입니다.

    잘하면 GCP 콘솔의 CloudSQL에서 "연결"을 선택하면 다음과 같은 화면이됩니다.


    GAS 쓰기



    SpreadSheet에서 도구 - 스크립트 편집기에서 작성합니다.
    자세한 내용은 할애합니다.
    /**
     * Read up to 1000 rows of data from the table and log them.
     */
    function readFromTable() {
    
      var connectionName = 'インスタンス接続名';
      var user = 'ユーザ名';
      var userPwd = 'パスワード';
      var db = 'DB名';
    
      var dbUrl = 'jdbc:google:mysql://' + connectionName + '/' + db;
      var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);
    
      var start = new Date();
      var stmt = conn.createStatement();
      stmt.setMaxRows(1000);
      var results = stmt.executeQuery('SELECT * FROM テーブル名');
      var numCols = results.getMetaData().getColumnCount();
    
      while (results.next()) {
        var rowString = '';
        for (var col = 0; col < numCols; col++) {
          rowString += results.getString(col + 1) + '\t';
        }
        Logger.log(rowString);
      }
    
      results.close();
      stmt.close();
    
      var end = new Date();
      Logger.log('Time elapsed: %sms', end - start);
    }
    

    인스턴스 접속명은 이쪽을 참조한다.


    시간이 없지만 아무래도 관리 화면이 필요! 라고 할 때는 적합합니다.

    좋은 웹페이지 즐겨찾기