sanchezzzhak / kak-clickhouse

Yii2 ext. ClickHouse
69 stars 43 forks source link

migration char fix #41

Closed igoreliseev closed 5 years ago

igoreliseev commented 5 years ago

Формируется некорректный JSON, например вот такой: "created_datetime":"\'2019-03-15 19:41:14\'", внутри значения лишняя кавычка, фикс убирает ее и загрузка успешно отрабатывает

sanchezzzhak commented 5 years ago

Привет как мне воспроизвести данный баг?

igoreliseev commented 5 years ago

привет, запустить твой же пример миграции из MySQL. Все строковые значения в JSON'е будут вида "created_datetime":"\'2019-03-15 19:41:14\'", и это ломает выгрузку

sanchezzzhak commented 5 years ago

Проверил текущий код на строковые значения даты, строки, числа все без проблем. Данные перегоняются нормально.

Я правильно понимаю что данные В JSON строке не проходят вставку?

igoreliseev commented 5 years ago

Да, именно.

пт, 24 мая 2019 г. в 12:53, Tutik Alexsandr notifications@github.com:

Проверил текущий код на строковые значения даты, строки, числа все без проблем. Данные перегоняются нормально.

Я правильно понимаю что данные В JSON строке не проходят вставку?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/sanchezzzhak/kak-clickhouse/pull/41?email_source=notifications&email_token=ABVKHLKSSB467ODDYU7AOADPW63KPA5CNFSM4HPEA74KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWEYCQY#issuecomment-495550787, or mute the thread https://github.com/notifications/unsubscribe-auth/ABVKHLMCROZNG53QZ6H2IJ3PW63KPANCNFSM4HPEA74A .

-- С уважением, Елисеев Игорь. +7 926 540-0048

sanchezzzhak commented 5 years ago

Я проверил также с JSON

КХ таблица

CREATE TABLE default.test_offer (
 event_date Date,
  offer_id UInt32,
  name String,
  status Int8
) ENGINE = MergeTree(event_date, offer_id, 8192)

Код для контролера

    /** @var Connection $db */
        $db = \Yii::$app->db;
        $exportDataCommand = new \kak\clickhouse\console\MigrationDataCommand([
            'sourceQuery' => (new \yii\db\Query())->select('*')->from('offer'),  
            'sourceDb' => $db,
            'storeTable' => 'test_offer',
            'storeDb' => \Yii::$app->clickhouse,
            'batchSize' => 10000,
            'mapData' => [
                'event_date' => function($data){
                    return date('Y-m-d', strtotime($data['created_at']));
                },
                'name' => function($data){
                    return Json::encode([
                        "created_date" => date('Y-m-d H:i:s'),
                        'rand_value' => rand(0,50),
                        'rand_array_value' => [
                            "value" =>  rand(0,50),
                        ],

                    ]);
                },
                'offer_id' => 'id',
                'status' => 'status',
            ]
        ]);

        $exportDataCommand->run();
    }

Данные которые отправил в КХ

'2017-03-29','{"created_date":"2019-05-24 12:58:19","rand_value":41,"rand_array_value":{"value":22}}',29,2
'2017-03-29','{"created_date":"2019-05-24 12:58:19","rand_value":33,"rand_array_value":{"value":35}}',48,2
'2017-03-29','{"created_date":"2019-05-24 12:58:19","rand_value":50,"rand_array_value":{"value":19}}',49,2
'2017-03-29','{"created_date":"2019-05-24 12:58:19","rand_value":34,"rand_array_value":{"value":14}}',51,2
'2017-03-29','{"created_date":"2019-05-24 12:58:19","rand_value":31,"rand_array_value":{"value":19}}',52,2
'2017-03-29','{"created_date":"2019-05-24 12:58:19","rand_value":3,"rand_array_value":{"value":48}}',53,2
'2017-03-29','{"created_date":"2019-05-24 12:58:19","rand_value":8,"rand_array_value":{"value":34}}',58,2
'2017-03-29','{"created_date":"2019-05-24 12:58:19","rand_value":20,"rand_array_value":{"value":12}}',59,2
'2017-03-29','{"created_date":"2019-05-24 12:58:19","rand_value":8,"rand_array_value":{"value":29}}',60,2
'2017-03-29','{"created_date":"2019-05-24 12:58:19","rand_value":13,"rand_array_value":{"value":19}}',64,2
sanchezzzhak commented 5 years ago

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

sanchezzzhak commented 5 years ago

Обнови пакет, я залил фиксы, ошибка была формировании csv