У меня есть столбец 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.
Я пытался искать другие решения, но могне могу найти ничего, чтобы обойти эту проблему.
Могу ли я что-нибудь сделать?Чего-то не хватает?