Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
Добрый вечер, есть проект. Первая часть проекта, есть перенос базы из mdb(около 10 таблиц) в ms sql(в соответствующую,конечно предварительно созданную). Так вот, в принципе одну таблицу перенес( десятки тысяч строк). Но есть нюанс,в акцессной базе есть поля- даты. В ms sql есть соответствующие в таблице поля с типом datetime.Если запись корректна, то переносится без проблем. переношу так: одна из строк конструкции insert into ...... ...... Код: plaintext 1. RecordSetOleDB - метод OleDbDataReader,в общем возвращается дата из таблицы mdb, затем конвертирую и принципе всё ок. Но если в mdb поле дата заполнено не корректно,например так 01.01.182 или 01.01.248, то возникает ошибка, не помню дословно, но суть в том что не может нормально сковертировать. по сути правильно. Варианты: 1.отрубить руки кто заполнял, конечно вариант хороший,но не по делу 2. можно ли в таком формате и инсёртить в базу?но у меня же поле в базе datetime 3.думал на крайняк,проходить предварительно базу акцесс и смотреть,если попадается строка с неправильной датой,то обнулять её типа 2222-01-01 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 22:36 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
denis_stell, 3.1 - инвалидные даты в NULL предварительно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 22:40 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
denis_stell1.отрубить руки кто заполнял, конечно вариант хороший,но не по делу Зато отрубить руки тому, кто использует непараметризованные запросы - по делу. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 23:01 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
K C++ вопрос не относится, вообще-то. Это ближе к проектированию систем и администрированию баз данных. В общем случае миграция делается так: - Читаешь строку из исходной таблицы. - Проверяешь на правильность данных. - Если нашел кривые данные - пытаешься догадаться что оператор имел в виду когда печатал чушь. Например если ты знаешь что работаешь с датой рождения и видишь человека родившегося в 2070-ом году - догадываешься что это должен быть 1970 и исправляешь. - Если исправить не получается - либо обнуляешь кривые данные, либо сбрасываешь в какое-то специальное значение, либо убиваешь строку (или весь логический объект) целиком. - Не забывай записывать все случаи исправлений-убиваний записывать в журнал. Потом читай его и ищи где можно улучшить процедуру исправления кривых данных. После нескольких прогонов получишь конфетку. И все... Параметризованные запросы используются или нет, в данном случае не важно. Ты уже будешь контролировать все данные уходящие в целевую базу так что проблем из-за "склееных" запросов не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 01:01 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
denis_stell2. можно ли в таком формате и инсёртить в базу?но у меня же поле в базе datetime Инсёртить можно, только нифига не проINSERT-ится. (т.е. грубо говоря, нельзя). Естественно, надо исправлять. denis_stell3.думал на крайняк,проходить предварительно базу акцесс и смотреть,если попадается строка с неправильной датой,то обнулять её типа 2222-01-01 Лучше NULL. Если схема данных позволяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 15:21 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
Заполнять NULL-ом. А если есть поле COMMENT то добавить туда запись о некорректной дате и прикрепить строку даты как есть. Далее - посадить девочек-пионерок чтоб вручную исправили все даты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 17:26 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
mayton, до загрузки лучше данные чистить, таково ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 21:34 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
Изопропилmayton, до загрузки лучше данные чистить, таково ИМХО Когда грузят данные из сторонних систем то их обычно льют в промежуточные таблицы как есть. С битыми датами, денежными величинами, кривыми ключами. Потом из этих промежуточных какой-то логикой чистят и грузят что можно в таблицу бизнес-фактов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 23:02 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
mayton, насколько система "сторонняя" - не сказазно - скорее своё добро мамонта, а его не грех почистить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 23:22 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
maytonИзопропилmayton, до загрузки лучше данные чистить, таково ИМХО Когда грузят данные из сторонних систем то их обычно льют в промежуточные таблицы как есть. С битыми датами, денежными величинами, кривыми ключами. Потом из этих промежуточных какой-то логикой чистят и грузят что можно в таблицу бизнес-фактов. Как бы если это всё можно проделать на клиенте до заливки, то лучше так и делать. Загрузка в БД во временное хранилище оправдано только, если другими способами как в БД (используя естественно SQL или PL SQL) данные не обработать. А так -- это напрасная трата времени и ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 23:46 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
MasterZivЗагрузка в БД во временное хранилище оправдано только, если другими способами как в БД (используя естественно SQL или PL SQL) данные не обработать. А так -- это напрасная трата времени и ресурсов.Не знаю при каких условиях данные нельзя почистить на клиенте. Вот как раз временные хранилища в БД я назову напрасной тратой времени и ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 00:03 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
White Owl, Ну я как бы тоже на это намекал. Но всякое бывает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 01:47 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
всем спасибо. сделал следующим образом, до загрузки контроль данных,при котором все "кривые" даты затираются в NULL, а исходные даты помещаю в примечание. Столкунлся с проблемой,точнее может с моей неопытностью пока что как то так: В общем как и было оговорено, есть база на access, импортирую в ms sql. Всего получилось нужных 6 таблиц, всего порядка 300000-500000 записей. mdb грузится каждый день, в файле некоторые данные добавляются,некоторые просто новые. реализовал 6 потоков, в потоковой функции сам импорт. работа с mdb через OleDbConnection OleDbDataReader OleDbCommand итд с ms sql SqlConnection,SqlCommand.... часть кода while (RecordSetOleDB_BL.Read()) // прохожусь по базе акцесс, и тут 2 действия 1) если в базе уже есть данные удаляю Код: plaintext 1. 2. 2) сам импорт Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. в конце выхожу из команд, закрываю соединения итд . В общем отрабатывает, но очень долго, как ускорить процесс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 17:16 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
denis_stell, Во-первых нужен только один поток, так как вы пишете на один диск, и тут чем больше потоков тем медленнее запись. Во-вторых не изобретайте велосипед, а воспользуйтесь каким-либо штатным средством, их великое множество, как минимум вспоминаю Data Pump и Linked Server в скуле. В третьих используйте bulk insert. Всего-то надо пару insert into select from запросов написать. И вообще вам в соответствующий форум надо обращаться (MS SQL Server, MS Access). Едете в Париж через Австралию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 17:23 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
sherzod_, Замечание о потоках верно, все остальное не верно. Ни блочные заливки, ни "штатные средства" ему не помогут. Первое умрет на этапе кривых данных (прочитай первый пост топика). А "штатные средства" либо тоже умрут на кривых данных, либо потребуют не малых денег, а потом еще и не малого времени на настройку. denis_stell, Мне сильно кажется что ты занимаешься переливкой данных. Читаешь из одной таблицы и пишешь в другую. Так? Если "да", то очень плохо. Сделай на клиенте структуры (классы) представляющие собой бизнес-объекты. Потом заполняешь эти объекты из одной базы, и после того как собрал объект целиком - пишешь в новую базу. Простой цикл в один поток. Просто, легко и надежно. Этот подход даст тебе намного более удобный для дальнейшей работы лог ошибок. Сможешь писать туда что-нибудь в духе: "Клиент ФЫВА имеет плохую дату в дне рождения. Клиент ЯЧСМ имеет три контракта в списке контрактов, но найдено только два контракта найдено в реальности". Потом отдаешь этот список начальству и тем кто вбивает данные в старую базу - они исправляют данные. Заодно сможешь с легкостью изменить структуру хранения данных в новой БД. У меня подобные схемы работали (и работают) очень даже замечательно. А по скорости работы зависит от объема исходной базы и драйверов доступа к базам. Когда-то, на заре века, у меня двухгиговая DBF база превращалась таким образом в ASA7 за два часа. Сегодня 50Г данных переливаются из MS SQL 2008 в ASE 15 за час. В обоих случаях программы-превращатели написаны на С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 19:16 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
Да ему бы хотя бы параметризованные запросы освоить... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 19:22 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
White Owl, о чем это вы. Это стандартная ДБА задача. Какие еще программы на компилируемых языках. Люди на TransactSQL биллинги целые пишут, включая работу с устройствами, файлами и со всем остальным, а вы говорите на плохих данных ляжет ). Ровно один запрос на каждую таблицу, независимо от того что там с данными, ровно два запроса при использовании bulk insert. При том что править их в десятки раз быстрее, поправил-попробовал, поправил-попробовал. А тут компилируй, подключись, запусти, посмотри, ищи ошибку. Смех да и только. Топикстартер, напишите в MS SQL Server что надо сделать, вам за 5 минут решение предложат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 20:10 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
sherzod_White Owl, о чем это вы. Это стандартная ДБА задача. Какие еще программы на компилируемых языках. Люди на TransactSQL биллинги целые пишут, включая работу с устройствами, файлами и со всем остальным, а вы говорите на плохих данных ляжет ).Это далеко не стандартная задача и уж совсем не для DBA. Это задача для дата-архитектора, а не администратора сервера. sherzod_ Ровно один запрос на каждую таблицу, независимо от того что там с данными, ровно два запроса при использовании bulk insert.Вот это и есть твоя ошибка. Ты не смотришь на то "что там с данными". Да, в идеальном мире, источником данных будет идеальная база с идеальной целостностью данных. Тогда действительно данные типа "имя" или данные типа "адрес" можно получить разом по всем контрагентам за один запрос. Но в реальности, мы вынуждены жить с базами в которых бывают контрагенты без имени и имена без контрагентов. А так же, задача миграции с одной базы на другую всегда сопровождается сменой структуры базы. Раньше имя хранилось так, а теперь имя будет хранится сяк. Раньше накладные хранились в двух таблицах, а сейчас будут в двадцати-двух. Смену структуры хранения ты в конечно в несколько запросов упихать сможешь, но bulk insert обломается. sherzod_ При том что править их в десятки раз быстрее, поправил-попробовал, поправил-попробовал. А тут компилируй, подключись, запусти, посмотри, ищи ошибку. Смех да и только.Смейся. Когда сам попробуешь позаниматься мигрированием БД - будешь смеяться еще раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 20:37 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
White Owl, Вы понимаете что TransactSQL может все? В том числе обработать любые ошибки в данных. Это полноценный язык программирования предназначенный именно для таких задач. Но даже это не важно. Важно то что в даже рамках ANSI SQL указанная задача преобразования дат решается простым coalesce. А миграцией данных тут каждый первый занимался. На скульру как никак находимся. И уж точно никакой DB специалист не станет писать для миграции программу на си или плюсах. Это нонсенс. У нас для таких задач максимум что написано (причем на шарпе), так это скриптовалка, которая анализируя схему выдает скрипты дифов схем. А вы говорите миграция на плюсах. Не 80-й год ведь. Пока вы там неделю ваять будете и баги править, DBA вам скриптик накатает минут за 5 для одной таблицы, со всеми обработками ошибок. Еще на фортране посоветуйте миграцию сделать. И не путайте роли. Дело архитектора схему разработать а не скриптики миграции писать, последнее теоретически делает дба или разработчик, а практически дба или дба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 21:31 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
sherzod_DBA вам скриптик накатает минут за 5 для одной таблицы, со всеми обработками ошибок. а DBA то здесь причём? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 21:59 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
Ребят, то что грузиться через С(точнее проект на С#), это только маленькая часть всего проекта,это только парс данных,для анализа данных в последующем,расчета прибыльности филиала и много чего ещё. сначала подумал,за способ.который когда то сам делал,что то типа этого,к примеру Код: sql 1. 2. . но решил,что средствами visual studio,т.е. анализирую данные здесь в коде,конвертации даты,времени и других полей. Если рассматривать параметризированные запросы, будут ли они отрабатывать быстрее?чем в моём случае? Хранимые процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 22:06 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
denis_stell, проще на аксессе данные в порядок привести и из него загрузить куда надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 22:08 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
Изопропил, так у меня и реализовано,изменение некорректных данных, но если правильно понимаю, при переносе из акцесса, в любом случае же нужно данные подбивать? например те же даты(корректные) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 22:15 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
[quot White Owl Мне сильно кажется что ты занимаешься переливкой данных. Читаешь из одной таблицы и пишешь в другую. Так? Если "да", то очень плохо. Сделай на клиенте структуры (классы) представляющие собой бизнес-объекты. Потом заполняешь эти объекты из одной базы, и после того как собрал объект целиком - пишешь в новую базу. [/quot] именно переливка и уже понял,что плохо. интересен ваш вариант, можете привести пример(код), на пальцах или ссылку где есть что-то подобное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 22:21 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
sherzod_White Owl, Вы понимаете что TransactSQL может все? В том числе обработать любые ошибки в данных. Это полноценный язык программирования предназначенный именно для таких задач. Но даже это не важно. Важно то что в даже рамках ANSI SQL указанная задача преобразования дат решается простым coalesce.То что задачу решить можно этими средствами, не означает что ее нужно решать этими средствами. Я разве когда-то говорил что миграцию невозможно сделать на чистом SQL? (кстати, TransactSQL очень хиленький диалект). Я говорю об эффективности и скорости решения задачи. sherzod_А миграцией данных тут каждый первый занимался. На скульру как никак находимся. И уж точно никакой DB специалист не станет писать для миграции программу на си или плюсах. Это нонсенс.Ну я писал. И пишу. При этом и "штатные средства" (в частности Data Services от BO) тоже используются, так же есть несколько баз таскающие данные друг у друга через linked/proxy tables. А одна связка сделана на bat+bcp и ниче, живет и здравствует. Вот только почему-то мои клиенты на С обрабатывают больше данных и делают это быстрее. И логи от них можно впрямую отдавать секретарям-машинисткам для исправления ошибок в исходных базах (секретари-машинистки ничего не знают о структурах этих баз и часто вообще не знают что такое база данных). sherzod_У нас для таких задач максимум что написано (причем на шарпе), так это скриптовалка, которая анализируя схему выдает скрипты дифов схем. А вы говорите миграция на плюсах. Не 80-й год ведь. Пока вы там неделю ваять будете и баги править, DBA вам скриптик накатает минут за 5 для одной таблицы, со всеми обработками ошибок. Да пожалуйста, пожалуйста. Хочешь спихнуть задачу на DBA и заставить его катать скриптики - вперед. Только учти что это ты не решаешь задачу на самом деле, а ты спихиваешь задачу на кого-то еще и надеешься что она будет решена эффективнее чем ты сам ее решишь. Только и всего. Не хочешь мне верить что клиент построенный вокруг бизнес-объектов эффективнее и удобнее чем блочная обработка таблиц - не верь. ССЗБ, как говориться... sherzod_Еще на фортране посоветуйте миграцию сделать. Фокус пойдет? У нас одна из связок именно на нем работает. С мейнфрейма данные выкачиваются Фокусом в файлы, потом программка на Rexx сортирует их и пересылает по ftp на AIX'овый хост, а там их подхватывают несколько сотен Perl'овых скриптов которые уже и заливают данные в ASE. И если перловую половину миграции можно переписать на что-то еще, то фокусную - обломинго, ограничения платформы. И все это отрабатывает каждую ночь... sherzod_И не путайте роли. Дело архитектора схему разработать а не скриптики миграции писать, последнее теоретически делает дба или разработчик, а практически дба или дба.ню-ню :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 00:44 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
denis_stellинтересен ваш вариант, можете привести пример(код), на пальцах или ссылку где есть что-то подобное? А это чем не на пальцах? White OwlСделай на клиенте структуры (классы) представляющие собой бизнес-объекты. Потом заполняешь эти объекты из одной базы, и после того как собрал объект целиком - пишешь в новую базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 01:07 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
White Owldenis_stellинтересен ваш вариант, можете привести пример(код), на пальцах или ссылку где есть что-то подобное? А это чем не на пальцах? White OwlСделай на клиенте структуры (классы) представляющие собой бизнес-объекты. Потом заполняешь эти объекты из одной базы, и после того как собрал объект целиком - пишешь в новую базу. Если не затруднит Вас пример, простенький ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 10:00 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
sherzod_, Ты , наверное, PM из бывших разработчиков БД. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 11:30 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
denis_stell[quot White Owl Мне сильно кажется что ты занимаешься переливкой данных. Читаешь из одной таблицы и пишешь в другую. Так? Если "да", то очень плохо. Сделай на клиенте структуры (классы) представляющие собой бизнес-объекты. Потом заполняешь эти объекты из одной базы, и после того как собрал объект целиком - пишешь в новую базу. именно переливка и уже понял,что плохо. интересен ваш вариант, можете привести пример(код), на пальцах или ссылку где есть что-то подобное?[/quot] Кстати, не в обиду плюсам, но тут бы мог помочь hibernate. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 11:35 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Нет я разработчик, и как и все здесь, плотно занимался базами, и просто знаю что уж такую вещь как перенос данных, языковыми средствами самой базы в десятки раз быстрее сделать. Я сторонник применения соответствующих инструментов. Ладно еще там подмешана бизнес-логика, какие-то adhock задачи - можно вынести, но перенос (включая обработку ошибок) - не не, огород. Просто бывает сильна привычка. У меня есть друг который не осваивал кроме плюсов ничего. Вот ему любую задачу легче и комфортнее сделать на плюсах. Бывает такие огороды городит что волосы дыбом встают. Хотя я не хочу спорить с White Owl, если задачи решаются, и все работает, это хорошо и результативно, и никто не ругается - то какая разница, на чем ты это делаешь:)). Другое дело, что наиболее вероятный путь который он пройдет (мой друг) - начнет понимать что тексты запросов надо выносить из кода, потом начнет понимать что надо как-то их шаблонизировать (слишком много схожестей), будет добавлять расширенную параметризацию запросов, потом начнет делать конструктор, начнет более-менее понимать что в диалекте его базы довольно много полезных функций, добавит скриптовалку на Lua или JS, и в конце концов придумает свой SQL PL, увидит что он только что заново написал жалкую пародию на диалект используемой базы, и будет просветлен, разве вам это не знакомо? А если не пройдет, значит сила привычки оказалась сильнее. While Owl, и не говорите что у вас в утилитах не присутствует ничего из выше-описанного :)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 12:11 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
sherzod_Просто бывает сильна привычка. У меня есть друг который не осваивал кроме плюсов ничего. Вот ему любую задачу легче и комфортнее сделать на плюсах. Бывает такие огороды городит что волосы дыбом встают. Хотя я не хочу спорить с White Owl, если задачи решаются, и все работает, это хорошо и результативно, и никто не ругается - то какая разница, на чем ты это делаешь:)). Ну мне иногда тоже проще так сделать. В смысле -- на плюсах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 12:26 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
Побурчу. sherzod_Другое дело, что наиболее вероятный путь который он пройдет (мой друг) - начнет понимать что тексты запросов надо выносить из кода, Их надо выносить толкьо тогда, когда они могут поменяться. Для утилит переноса данных это маловероятно -- если уж что-то будет меняться, то и структура также, а это значит всё равно надо утилиту менять. sherzod_ потом начнет понимать что надо как-то их шаблонизировать (слишком много схожестей), Никогда не нужно искать похожести в запросах и пытаться их выделить. Ну, почти никогда. SQL -- это ассемблер для СУБД. Не нужно его комманды пытаться разбивать на части. sherzod_ будет добавлять расширенную параметризацию запросов, потом начнет делать конструктор, Запросов ? Ох... sherzod_начнет более-менее понимать что в диалекте его базы довольно много полезных функций, добавит скриптовалку на Lua или JS, и в конце концов придумает свой SQL PL, увидит что он только что заново написал жалкую пародию на диалект используемой базы, и будет просветлен, разве вам это не знакомо? Почему же, может у него получится лучший язык ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 12:31 |
|
||
|
как лучше сделать
|
|||
|---|---|---|---|
|
#18+
sherzod_Другое дело, что наиболее вероятный путь который он пройдет (мой друг) - начнет понимать что тексты запросов надо выносить из кода, потом начнет понимать что надо как-то их шаблонизировать (слишком много схожестей), будет добавлять расширенную параметризацию запросов, потом начнет делать конструктор, начнет более-менее понимать что в диалекте его базы довольно много полезных функций, добавит скриптовалку на Lua или JS, и в конце концов придумает свой SQL PL, увидит что он только что заново написал жалкую пародию на диалект используемой базы, и будет просветлен, разве вам это не знакомо? А если не пройдет, значит сила привычки оказалась сильнее. While Owl, и не говорите что у вас в утилитах не присутствует ничего из выше-описанного :)).В утилитах миграции - нет, не присутствует. Ты забываешь что время жизни у таких утилит ограничено. Самый долгий период что я видел - два года. Контора не торопясь переходила с системы учета клиентов на Клиппере на новую систему на PowerBuilder. С год эта новая система писалась и отлаживалась на основе фиктивных данных, потом мы решили что пора уже тестировать на более приближенных к реальности данных и я написал соответствующий конвертор. Два года он еженочно конвертировал данные всех филиалов из DBF в офисную базу на ASA7. Потом распространялся в составе инсталлятора новой системы. Отработал по разу во всех филиалах и франчайзах и ... умер. Сейчас уже с полгода подобная система крутится (и по тем же причинам) в одной из наших школ. Там переходят с MS SQL 2008, на ASE 15.5. Можно конечно было и связанными таблицами сделать, но количество кода на TSQL получалось таким же как и количество кода у клиента на С. Смена структуры хранения данных очень не способствует краткости кода, знаете ли. А по скорости клиент получился быстрее. Да и логи объекто-зависимые это огромный плюс. Но очень скоро новый ГУИ будет готов и этот конвертор тоже умрет... Что ты там шаблонизировать собираешься я не очень представляю. У старой базы структура не меняется в принципе, а с новой работаешь чистыми insert'ами и update'ами. Причем знаешь что завтра возможно эти insert'ы и update'ы придется подправить. И никакой метаинформации у развивающейся базы нет. А если и есть, то она частенько отстает от реальной структуры. А свои скриптовалки и расширения SQL я изобретал. Как же без этого! :) Но это было (и есть) на задачах близких к отчетным системам. Вот там шаблоны и скриптовалки делать есть смысл. А PL/SQL мне тоже не нравится. Вообще, мне сильно кажется, что чем древнее диалект, тем более он неудобный. Почему-то разработчики СУБД сделав более-менее приемлемую реализацию SQL замирают и перестают улучшать свой диалект. Потом приходит новый игрок, делает более лучший диалект и постепенно тоже замирает.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 18:34 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2020048]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 175ms |

| 0 / 0 |
