sql >> データベース >  >> RDS >> SQLite

SQLliteデータベースをGoogleドライブアプリフォルダにバックアップ/復元します

    MyDbFile.dbへのパスがあると仮定します ファイルの場合、次のような構成を使用できます:

     ... 
     saveToDrive(
       Drive.DriveApi.getAppFolder(getGoogleApiClient()),
       "MyDbFile.db", 
       "application/x-sqlite3",
       new java.io.File("\...\...\...\MyDbFile.db")
     );
     ...
    
    DriveId mDriveId;
    /******************************************************************
     * create file in GOODrive
     * @param pFldr parent's ID
     * @param titl  file name
     * @param mime  file mime type  (application/x-sqlite3)
     * @param file  file (with content) to create
     */
    void saveToDrive(final DriveFolder pFldr, final String titl,
                     final String mime, final java.io.File file) {
      if (getGoogleApiClient() != null && pFldr != null && titl != null && mime != null && file != null) try {
        // create content from file
        Drive.DriveApi.newDriveContents(getGoogleApiClient()).setResultCallback(new ResultCallback<DriveContentsResult>() {
          @Override
          public void onResult(DriveContentsResult driveContentsResult) {
            DriveContents cont = driveContentsResult != null && driveContentsResult.getStatus().isSuccess() ?
              driveContentsResult.getDriveContents() : null;
    
            // write file to content, chunk by chunk
            if (cont != null) try {
              OutputStream oos = cont.getOutputStream();
              if (oos != null) try {
                InputStream is = new FileInputStream(file);
                byte[] buf = new byte[4096];
                int c;
                while ((c = is.read(buf, 0, buf.length)) > 0) {
                  oos.write(buf, 0, c);
                  oos.flush();
                }
              }
              finally { oos.close();}
    
              // content's COOL, create metadata
              MetadataChangeSet meta = new Builder().setTitle(titl).setMimeType(mime).build();
    
              // now create file on GooDrive
              pFldr.createFile(getGoogleApiClient(), meta, cont).setResultCallback(new ResultCallback<DriveFileResult>() {
                @Override
                public void onResult(DriveFileResult driveFileResult) {
                  if (driveFileResult != null && driveFileResult.getStatus().isSuccess()) {
                    DriveFile dFil = driveFileResult != null && driveFileResult.getStatus().isSuccess() ?
                      driveFileResult.getDriveFile() : null;
                    if (dFil != null) {
                      // BINGO , file uploaded
                      dFil.getMetadata(getGoogleApiClient()).setResultCallback(new ResultCallback<MetadataResult>() {
                        @Override
                        public void onResult(MetadataResult metadataResult) {
                          if (metadataResult != null && metadataResult.getStatus().isSuccess()) {
                            DriveId mDriveId = metadataResult.getMetadata().getDriveId();
                          }
                        }
                      });
                    }
                  } else { /* report error */     }
                }
              });
            } catch (Exception e) { e.printStackTrace(); }
          }
        });
      } catch (Exception e) { e.printStackTrace(); }
    }
    
    /*******************************************************************
     * get file contents
     */
    void readFromGooDrive() {
      byte[] buf = null;
      if (getGoogleApiClient() != null && getGoogleApiClient().isConnected()) try {
        DriveFile df = Drive.DriveApi.getFile(getGoogleApiClient(), mDriveId);
        df.open(getGoogleApiClient(), DriveFile.MODE_READ_ONLY, null)
          .setResultCallback(new ResultCallback<DriveContentsResult>() {
          @Override
          public void onResult(DriveContentsResult driveContentsResult) {
            if ((driveContentsResult != null) && driveContentsResult.getStatus().isSuccess()) {
              DriveContents cont = driveContentsResult.getDriveContents();
              // DUMP cont.getInputStream() to your DB file
              cont.discard(getGoogleApiClient());    // or cont.commit();  they are equiv if READONLY
            }
          }
        });
      } catch (Exception e) { e.printStackTrace(); }
    }
    

    幸運




    1. MySQLで日時形式を変更する方法

    2. MySQLで過去1か月のデータを取得する方法

    3. MySQLの引数のリスト内で引数の位置を返す方法

    4. SSISExcelインポートの強制が正しくない列タイプ