Я использую Kettle для преобразования и удара этой же проблемы, пытаясь получить значение для параметра «out» на основе integer в mysql (поле должно быть действительно bigint
, но я не думаю, что оно поддерживается в чайнике).Как обойти эту ошибку ввода/вывода mysql в чайнике?
Я реализовал обходной путь для этого точного вопроса с десятичной, но у меня чертовски времени, пытаясь получить значение во-первых, обратно в поле идентификатора (не id_1
), а во-вторых, преобразуйте его обратно в целое число, чтобы его можно было вставить в базу данных.
Это отношение потока:
Это определение шага:
На входящем потоке выходящего из lookup existing id
там уже поле добавлено называется id
который является десятичным числом, которое может быть либо значением, либо нулевым. Если он равен нулю, он запускает этот поиск процедуры db на этапе filter rows
, так что, другими словами, он всегда будет равен нулю на этапе db procedure
(и, следовательно, я не могу использовать параметр in-out здесь).
Так что я хочу, чтобы это произошло, когда он покидает этап db procedure
, id
должен быть заполнен значением параметра out (в идеале это будет целое число, но я могу жить десятичным из-за ошибки). Но вместо этого я получаю id_1
, вставленный в поток.
Затем дальше по строке, предполагая, что у меня есть значение в поле id как десятичное, мне тогда нужно преобразовать это обратно в Integer, чтобы он мог быть вставлен в базу данных без ошибок. Я действительно не знаю, как писать javascript в Kettle, хотя я не могу найти документацию на этом языке.
Так что мои вопросы двоякие:
- Может ли я сделать процедуру дб вставить
id
обратно в поток? - Как написать скрипт (или использовать шаг), который преобразует
id
(илиid_1
) в Целое число и помещает его обратно в полеid
в потоке?
ОК спасибо, у меня уже была эта работа на самом деле, я нашел шаг «setField», чтобы извлечь значение из id_1 и присвоить его id в ветке процедуры db. Тогда я не знаю, как, но я также получил Integer, поэтому, возможно, какая-то другая проблема вызывала исключение раньше. Но теперь он все равно работает, и я полностью выполнил шаг Javascript. –