Конвертируйте SVG-изображения, хранящиеся в GCSQL в виде больших двоичных объектов, в строки в скрипте Apps

0

Мне нужно сохранить SVG-изображения в таблице Google Cloud SQL (MySQL), а затем извлечь их, чтобы изменить некоторые значения атрибутов XML в скрипте приложений с помощью службы XML. Изображения хранятся на Диске. Сначала я пытался вставить изображения в db как строки, но я получил сообщение об ошибке: "Аргумент слишком велик". Итак, я попытался сделать то же самое, но отправил изображения как Blobs, которые, по-видимому, решили эту проблему, но когда я делаю запрос на извлечение капли, а затем преобразовываю их в строки, я получаю сообщение об ошибке: "Service Error: JdbcBlob". Мой код ниже, любая идея, что вызывает эту ошибку? Я уже прочитал документацию, но я не могу найти решение.

    function xmlRead(){    

       var id = "some id";
       var rawXml = DriveApp.getFileById(id).getBlob();

       var params = {
          ip: "some ip",
          user: "some user",
          password: "some password",
          database: "some db"
       }

       var dbUrl = 'jdbc:mysql://' + params.ip + '/' + params.database;
       var conn = Jdbc.getConnection(dbUrl, params.user, params.password);
       var stmt = conn.createStatement();

       var sql  = "INSERT INTO pruebas_conexion_blob (datos) VALUES ('" + rawXml + "');";
       var results = stmt.executeUpdate(sql);

       var sql_blob  = "SELECT * FROM pruebas_conexion_blob WHERE id = (SELECT MAX(id) FROM pruebas_conexion_blob)";  
       var results = stmt.executeQuery(sql_blob); //type jdbcresultset

       while (results.next()) { 
            var results_blob = 
            results.getBlob('datos').getAppsScriptBlob().getDataAsString(); //error happens on this line
        }

       var xml = XmlService.parse(results_blob);
       return xml; 
   }

Кстати, это мой первый пост в Stackoverflow, если я нарушаю правило, пожалуйста, дайте мне знать.

Теги:
google-apps-script
jdbc
google-cloud-sql

1 ответ

0

Я решил свою проблему, вот код:

function xmlRead(){    

      var id = "some id";
      var rawXml = DriveApp.getFileById(id).getBlob().getBytes();

      var params = {
         ip: "some ip",
         user: "some user",
         password: "some password",
         database: "some db"
      }  

      var dbUrl = 'jdbc:mysql://' + params.ip + '/' + params.database;
      var conn = Jdbc.getConnection(dbUrl, params.user, params.password);
      var stmt = conn.createStatement();

      var statement = conn.prepareStatement("INSERT INTO pruebas_conexion_blob (datos) VALUES (?)");
      statement.setBytes(1, rawXml);
      var results = statement.executeUpdate();

      var consulta  = "SELECT datos FROM pruebas_conexion_blob WHERE id = (SELECT MAX(id) FROM pruebas_conexion_blob)";  
      results = stmt.executeQuery(consulta); 

      while (results.next()) { 
         var results_string = results.getString('datos');
     }  

     results.close();
     stmt.close();
     statement.close();

     var xml = XmlService.parse(results_string); 
     return xml; 
 }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню