Снежинка Javascript Процедура Усеченная таблица не эффективна - PullRequest
0 голосов
/ 17 апреля 2020

Большую часть этой недели я потратил на написание некоторой хранимой процедуры Javascript в Snowflake, чтобы справиться с несколькими вещами. Но я не могу понять, почему Truncate Table не работает.

    try {

        var get_tables = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'SCHEMA' AND TABLE_CATALOG = 'DATABASE' ORDER BY TABLE_NAME DESC;"
        var tableStmt = snowflake.createStatement( {sqlText: get_tables} );
        var rs = tableStmt.execute();

        while (rs.next()) {

            var table = rs.getColumnValue(1);

            var truncateTable = "TRUNCATE TABLE DATABASE.SCHEMA." + table
            var truncateStmt = snowflake.createStatment( {sqlText: truncateTable} );
            var truncateEx = truncateStmt.execute();
      }
   }

Этот шаблон создания запросов приведен в их документации и, похоже, работает для любого другого запроса, который я поставил. все вместе. Но это терпит неудачу для этого, и я не получаю синтаксическую ошибку или что-нибудь. Я упустил этот улов и прочее, потому что это единственная релевантная часть.

Я дополнительно попробовал

var truncateTable = "TRUNCATE TABLE DATABASE.SCHEMA." + table + ";"

Я проверил этот конкретный c запрос к таблицам в обычном SQL запрос в Snowflake и подтвердил, что он работает.

Я что-то здесь упускаю?

1 Ответ

0 голосов
/ 17 апреля 2020

Поскольку вы SQL выполняете внутри блока try, ошибки не отображаются. Возможно, вы обрабатываете это в улове, но оно не отображается.

Если вы закомментируете блок try, он должен отображать ошибку при запуске. Может быть, это проблема с разрешениями. Хранимые процедуры могут выполняться с правами вызывающей стороны или владельцем. Если вызывающая сторона не имеет права на чтение из INFORMATION_SCHEMA или усечение таблиц в списке, это приведет к ошибке. Вы можете позвонить, используя права владельца, если это имеет смысл в данной ситуации.

Что происходит, когда вы запускаете это так?

    //try {

        var get_tables = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'SCHEMA' AND TABLE_CATALOG = 'DATABASE' ORDER BY TABLE_NAME DESC;"
        var tableStmt = snowflake.createStatement( {sqlText: get_tables} );
        var rs = tableStmt.execute();

        while (rs.next()) {

            var table = rs.getColumnValue(1);

            var truncateTable = "TRUNCATE TABLE DATABASE.SCHEMA." + table
            var truncateStmt = snowflake.createStatment( {sqlText: truncateTable} );
            var truncateEx = truncateStmt.execute();
      }
   //}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...