# Редактор скрипта загрузки Скрипт загрузки генерируется автоматически после [выбора источников данных](https://book.winsolutions.ru/books/rukovodstvo-polzovatelya-fastboard/page/vybor-dannyx-dlya-zagruzki). Этап ручного редактирования скрипта загрузки является необязательным, однако функциональность Fastboard позволяет при необходимости внести изменения. ### [](https://book.winsolutions.ru/uploads/images/gallery/2023-04/R5nimage.png) ### **Правила использования редактора** #### Добавить источник
**Шаги** | **Ожидаемый результат** |
В любом месте скрипта добавить строку *Source "Название коннекта"* где: - Source - ключевое слово обозначающее вставку нового коннекта, - "Название источника" - имя коннекта из списка источников | - При вставке кода для импорта таблиц из этого источника таблицы успешно загрузятся в БД проекта |
**Шаги** | **Ожидаемый результат** |
- Объявить название таблицы:
*Table "Car"*
- Определить и указать скрипту список полей новой таблицы. Для этого:
1. Описать секцию Create (команда на языке Clickhouse для создания таблицы в БД проекта, в которую запишутся данные из таблицы-источника):
*Create @@@ - начало секции
CREATE TABLE IF NOT EXISTS - команда КХ на создание таблицы
"id" String NULL, - поле таблицы, в которое будет записано значение из источника: "название поля" / тип данных / может ли быть пустым (если нет, not null)
"createdAt" DateTime64 (6) NULL,
"updatedAt" DateTime64 (6) NULL,
) ENGINE = MergeTree ()
ORDER BY
tuple ()* @@@ *- конец секции Create*
2. Описать секцию Delete (для удаления временной таблицы):
*Delete @@@*
*ALTER TABLE "Car" DELETE WHERE 1=1*
*@@@*
3. Описать секцию Read (Для выбора полей из таблицы-источника: *Read @@@
SELECT - команда (на языке источника) на выбор полей
"id"::text, - поле таблицы, которое будет взято из источника. "название поля" / тип данных. Для избежания ошибок при импорте всем полям данной секции прописывается тип ::text
"createdAt"::text,
"updatedAt::text,
FROM
"Car" - таблица источника
@@@*
4. Описать секцию Write
*Write @@@*
*INSERT INTO - команда на языке КХ на вставку данных созданную в КХ*
*"Car" (*
*"id",*
*"createdAt",*
*"updatedAt"*
*)*
*@@@*
5. Необязательная секция *Optimize @@@*
*OPTIMIZE TABLE "Car" DEDUPLICATE*
*@@@* По умолчанию есть.* *Если ее оставить, то произойдет дедубликация полей. Если это действие не требуется, секцию нужно удалить.
6. Убедиться что каждое поле импорта имеет одинаковое название в секциях Create, Read, Write
7. Нажать кнопку «Сохранить». Для сохранения изменений в тексте скрипта
8. Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки
| - Добавленная таблица появилась в списке доступных на странице модели данных проекта - Новая таблица содержит все поля указанные в скрипте загрузки - Новая таблица может быть использована в модели данных |
**Шаги** | **Ожидаемый результат** |
1. Удалить строку объявляющую таблицу *Table "Car"* 2. Удалить секции Create, Delete, Read, Write для этой таблицы 3. Нажать кнопку «Сохранить». Для записи изменений в тексте скрипта 4. Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки | Удаленная таблица исчезла из списка таблиц на странице модели данных |
**Шаги** | **Ожидаемый результат** |
1. В список полей таблицы куда вставляем секции Create добавить строку: *"id" String NULL - "название поля" / тип данных / может быть пустым Null (если нет, not null)* 2. В список полей таблицы откуда импортируем для секции Read добавить строку с названием поля: *"id"::text - "название поля" / тип данных (всегда текст)* 3. В список полей данной таблицы в секции Write добавить строку с названием поля: *"id" 4. Нажать кнопку «Сохранить». Для записи изменений в тексте скрипта 5. Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки | На странице модели данных в данной таблице появилось поле *"id"* с типом данных, указанным в секции Create |
**Шаги** | **Ожидаемый результат** |
1. В списке полей таблицы в секциях Create, Delete, Read, Write удалить необходимое поле 2. Нажать кнопку «Сохранить». Для записи изменений в тексте скрипта 3. Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки | Удаленное поле исчезло таблицы на странице модели данных |
**Шаги** | **Ожидаемый результат** |
1. В строке поля таблицы в секции Create изменить тип на один из поддерживаемых КХ: String, Int64, Float32 и т.д. [Полный список типов](https://clickhouse.com/docs/ru/sql-reference/data-types) 2. Нажать кнопку «Сохранить». Для записи изменений в тексте скрипта 3. Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки | Тип поля изменился в таблице |
В настоящий момент для применения любых изменений в таблицах (создание поля, переимнование поля, изменение типа поля и т.д.) необходимо пересоздать таблицу в БД проекта. Для этого после внесения всех изменеий к имени таблицы можно добавить, например \_1, после этого сохранить, затем запустить скрипт. При необходимости вернуть таблице старое название тем же способом. *(Это связано с текущими ограничениями парсера. Мы над этим работаем)*
#### Создать вычисляемое поле в таблице**Шаги** | **Ожидаемый результат** |
При импорте таблицы из источника перед вставкой таблицы в КХ можно создать поле которого нет в исходной таблице, но которое будет вычислено и создано на основе заданного выражения. Для этого: 1. В список полей таблицы в секции Create добавить новую строку с названием, типом, null, например: *"field\_name" Int32 NULL* 2. В секции Read добавить строку вида: *func::text as "field\_name" , где func - вычисляемое выражение, например "field\_name1" + "field\_name2", ::text - тип данных (всегда текст), as "field\_name" - алиaс поля* 3. В список полей данной таблицы в секции Write добавить строку с названием поля: *"field\_name"* 4. Нажать кнопку «Сохранить». Для записи изменений в тексте скрипта 5. Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки | В таблице появится поле с назначенным типом данных и рассчитанными по заданному выражению значениями |