|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
Всем привет. Помогите советом, с SQL знаком поверхностно, а тут новичку подсунули задачку. Есть некая табличка ANIMAL_TABLE: ID ANIMAL_ID ANIMAL_NAMES ANIMAL_AGE ANIMAL_BIRTHDAY ----------------------------------------------------------------------- 1 345577234 БАРСИК 14 12.08.2005 2 237424284 МУРЗИК 10 04.03.2009 3 573342341 РЫЖИК NULL NULL 4 234277213 КОТОПЁС NULL NULL 5 298782321 ГАРФИЛД 6 22.01.2013 То есть, у некоторых животных не проставлены значение ANIMAL_AGE и ANIMAL_BIRTHDAY. Так вот, еще есть файл animal_file.xlsx где как раз прописаны эти потерянные данные: ANIMAL_ID ANIMAL_AGE ANIMAL_BIRTHDAY 573342341 1 06.09.2018 234277213 7 17.10.2011 298782321 6 22.01.2013 Задача написать скрипт, который проставит данные из файл animal_file.xlsx в таблицу ANIMAL_TABLE вместо NULL значений. Пропарсить файлик animal_file.xlsx в строку с разделителем вроде не сложно. Например: Строка String_Animal = "573342341, 1, 06.09.2018 || 234277213, 7, 17.10.2011 || 298782321, 6, 22.01.2013" Так вот тут возникают пару вопросов. Это вообще реально сделать средствами SQL запроса, ибо строчек в таблице и данных в файле несколько тысяч? Как пробежаться циклом по моей мега строке, чтобы получить значения для UPDATE? Особого не ругайте, глубоких знаний по SQL пока не хватает, а тут ещё сам Oracle, вообщем задачку спихнули на меня, буду разбираться, благо интересно. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 14:27 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
Для одного раза хватит руками вставить куски запроса в столбцы, и получить готовый список SQL-операторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 14:32 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
Борис Левченко, Раз sql не особо, наверное, vba хорошо?) пишешь в excel макрос, который генерит скрипт insert и вуаля ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 14:40 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
Борис ЛевченкоПропарсить файлик animal_file.xlsx в строку с разделителем вроде не сложно. Спасибо. Зачем делать лишнюю работу? Тут надо создать временную табличку с данными из экселовского файла и апдейтить ее значениями ANIMAL_AGE и ANIMAL_BIRTHDAY таблицу ANIMAL_TABLE в соответствии с ANIMAL_ID. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 15:12 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
А... если задача как из эксел файла втавить в таблицу, то прямо в самом ексел файле можно дописать преобразование во вставки в таблицу: Создаем таблицу: Код: plsql 1. 2. 3. 4. 5. 6.
В эксел файле дописываем: ABCDEFGHIJANIMAL_IDANIMAL_AGEANIMAL_BIRTHDAY573342341106.09.2018' insert into ANIMAL_XLS(ANIMAL_ID. ANIMAL_AGE. ANIMAL_BIRTHDAY) values ( 573342341. 7. to_date(' 06.09.2018'.'dd.mm.yyyy');234277213717.10.2011 insert into ANIMAL_XLS(ANIMAL_ID. ANIMAL_AGE. ANIMAL_BIRTHDAY) values ( 234277213. 6. to_date(' 17.10.2011'.'dd.mm.yyyy');298782321622.01.2013 insert into ANIMAL_XLS(ANIMAL_ID. ANIMAL_AGE. ANIMAL_BIRTHDAY) values ( 298782321. 6. to_date(' 22.01.2013'.'dd.mm.yyyy'); Где в столбцах E, G и I ссылки на A, B и C , соответственно. Ну и в D, F, H и J точки заменить на запятые, поскольку, форум не позволяет их поставить и преобразовывает в таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 16:03 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
Oleg M.IvanovБорис ЛевченкоПропарсить файлик animal_file.xlsx в строку с разделителем вроде не сложно. Спасибо. Зачем делать лишнюю работу? Тут надо создать временную табличку с данными из экселовского файла и апдейтить ее значениями ANIMAL_AGE и ANIMAL_BIRTHDAY таблицу ANIMAL_TABLE в соответствии с ANIMAL_ID. Да всё верно, коллега подсказал, что надо использовать временные таблицы) (надо изменить название темы, чтобы не путать людей) И даже с ним сочинили алгоритм: 1) Пишется скрипт, который создаёт временную таблицу. (допустим ANIMAL_XLS) 2) Потом в эту таблицу заливается всё что есть в нашем здоровом файлике. 3) Потом делается временная бэкап таблицы с животными(ANIMAL_BACKUP), которые найдутся по ANIMAL_ID и скопировать туда поля из ANIMAL_XLS. 4) Потом пишется скрипт инсёрта из временной ANIMAL_BACKUP в ANIMAL_TABLE, кроме тех, у кого в полях ANIMAL_AGE и ANIMAL_BIRTHDAY уже что-то есть, потому что с момента постановки задачи до её выполнения кто-то уже мог их сам заполнить. Вроде логично, если нет, то подскажите. ---- Итак, создать временную табличку вроде несложно (может и нет), а вот как внести данные из файла в таблицу пока загадка. Правильно я понимаю, что нужно как-то получить данные из файлика, и подставить их в запрос insert к ANIMAL_XLS? Попробую поискать готовые программки на языках программирования для решения этой задачи, но может есть другие варианты? Или как oragraf подсказал, что можно в excel макрос написать, который генерит скрипт insert. Просто полей в файле чудовищно много около 10 000. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 17:15 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
Мда... Коллеги явно не ищут лёгких путей типа банального merge из external table. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 17:29 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
Борис Левченко, Это разовая задача? А то некоторые клиенты Oracle позволяют вставлять данные прямо копипастом. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 07:43 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
andrey_anonymousиз external table.на "около 10 000" полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 08:21 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
Борис Левченко как внести данные из файла в таблицу пока загадка. Правильно я понимаю, что нужно как-то получить данные из файлика, и подставить их в запрос insert к ANIMAL_XLS? Попробую поискать готовые программки на языках программирования для решения этой задачи, но может есть другие варианты? Или как oragraf подсказал, что можно в excel макрос написать, который генерит скрипт insert. Просто полей в файле чудовищно много около 10 000. Ну зачем такие извращения с программками и макросами? ctrl-c, ctrl-v за глаза в этом деле P.S. "Поля в файле" - это строки? 10000 строк это много? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 09:35 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
-2-andrey_anonymousиз external table.на "около 10 000" полей. Препроцессор отменили? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 12:56 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
oragraf Борис Левченко, Раз sql не особо, наверное, vba хорошо?) пишешь в excel макрос, который генерит скрипт insert и вуаля У меня примерно такая же задача и задача ее решить с помощью VBA, а не SQL. C SQL проблем-то нет, а вот в VBA я новичок. Пока реализовано загрузка таблицы из БД, где есть значения NULL в некоторых полях, на лист xlsm файла с помощью макроса и на другом листе файла таблица в которой вместо некоторых значений null проставлены значения. Как обновить таблицу в БД этими значениями? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 20:17 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
Как обновить таблицу в БД этими значениями? с помощью VBA На VBA сформировать SQL-запрос. Код: plsql 1.
Либо использовать какой-либо updateable resultset, если такой есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2021, 09:02 |
|
Цикл по строке для вывода данных в update таблицы.
|
|||
---|---|---|---|
#18+
Qiwi1, Задача выеденного яйца не стоит. На страничке в экселе в ячейки вставляешь формулы Код: vbnet 1.
Копируешь формулу на диапазон. Потом выделил столбец с полученными формулами скопировал и вставил в sqlplus или еще куда ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2021, 10:45 |
|
|
start [/forum/topic.php?fid=52&msg=39848458&tid=1880405]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
133ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 241ms |
0 / 0 |