Дерби Parse Image Hex в меньших кусках для столбца Blob - PullRequest
0 голосов
/ 27 июня 2019

У меня есть столбец Blob для хранения изображений.Я использую Java для дампа базы данных в сценарий SQL для использования в целях тестирования.У меня есть все, кроме изображений.

Я устанавливаю вывод BLOB-объекта на byte[], используя blobValue.getBytes(1L, blobValue.length()), затем преобразую в шестнадцатеричную строку, используя этот ответ SO .Затем я использовал то, что было рекомендовано из комментария DERBY-2198 для приведения hex к BLOB-объекту в сценарии SQL:

CAST(X'<HEX STRING>' AS BLOB)

Я предполагаю, что это сработает, но если нет, тоЯ приветствую лучшее решение.

В его нынешнем виде мне не удалось вставить в базу данных сценарий SQL, поскольку я получаю сообщение об ошибке, в котором говорится, что строковая константа слишком длинная.

java.sql.SQLException: A string constant starting with 'X'<First ~60 Chars>&' is too long.

и если я запускаю через NetBeans

[Exception, Error Code 0, SQLState 54002] A string constant starting with ... is too long.

, я попытался разбить строку на более мелкие куски длиной около 58 шестнадцатеричных символов и использовать конкатенацию Derby , используя || междуstrings.

Это дает мне утверждение, содержащее

CAST (X'<58 HEX Length>' || '<Another 58 HEX Length>' || ... AS BLOB)

Это вызывает у меня еще одну ошибку.

java.sql.SQLSyntaxErrorException: No authorized routine named '||' of type 'FUNCTION' 
    having compatible arguments was found.

Я пытался искать другие решения, но могне могу найти ничего, чтобы обойти эту проблему.

Могу ли я что-нибудь сделать?Чего-то не хватает?

...