Как пользователь модулей, мне очень нравится, когда я могу включить весь модуль через один импорт. Не делайте, чтобы пользователь вашего пакета выполнял несколько импортных операций, если нет причин, позволяющих импортировать разные альтернативы.
Кстати, нет причин, чтобы отдельные модули не состояли из нескольких исходных файлов. Самый простой случай - использовать файл __ init __. Py , чтобы просто загрузить весь другой код в пространство имен модуля.
Amit -
Не думаю, что вы можете добавить столбец в любом месте, но в конце таблицы после создания таблицы. Одним из решений может быть попытка:
CREATE TABLE MY_TEMP_TABLE AS SELECT * FROM TABLE_TO_CHANGE;
Отбросьте таблицу, в которую вы хотите добавить столбцы:
DROP TABLE TABLE_TO_CHANGE;
В тот момент вы можете перестроить существующую таблицу с нуля, добавив в столбцы, где хотите. Предположим, что для этого упражнения вы хотите добавить столбцы с именем «COL2 и COL3».
Теперь вставьте данные обратно в новую таблицу:
INSERT INTO TABLE_TO_CHANGE (COL1 , COL2, COL3, COL4) SELECT COL1, 'Foo', 'Bar', COL4 FROM MY_TEMP_TABLE;
Когда данные вставляются в вашу «новую-старую» таблицу, вы можете отбросить временную таблицу.
DROP TABLE MY_TEMP_TABLE;
Это часто бывает, когда я хочу добавить столбцы в определенном месте. Очевидно, что если это производственная он-лайн система, то это, вероятно, не практично, а только одна потенциальная идея.
-CJ
Просто выполните следующие действия:
alter table TABLE_NAME (COLUMN_NAME DATA_TYPE);
В конце таблицы будет добавлен новый столбец
Хотя это несколько старый, я хотел бы добавить немного улучшенную версию, которая действительно изменяет порядок столбцов. Вот шаги (если у нас есть таблица TAB1 со столбцами COL1, COL2, COL3):
alter table TAB1 add (NEW_COL number);
создать таблицу tempTAB1 как select NEW_COL как COL0, COL1, COL2, COL3 из TAB1;
drop table TAB1;
переименовать tempTAB1 в TAB1;
Вы (все еще) не можете выбрать позицию столбца, используя ALTER TABLE: его можно добавить только в конец таблицы. Очевидно, вы можете выбирать столбцы в любом порядке, поэтому, если вы не используете порядок столбцов SELECT * FROM, это не должно быть большой проблемой.
Если вы действительно должны иметь их в определенном порядке, и вы можете 't удалять и воссоздавать таблицу, тогда вы могли бы сбросить и воссоздать столбцы: -
Сначала скопируйте таблицу
CREATE TABLE my_tab_temp AS SELECT * FROM my_tab ;
Затем отпустите столбцы, которые вы хотите после столбца, который вы вставляете
ALTER TABLE my_tab DROP COLUMN три;
Теперь добавьте новый столбец (два в этом примере) и те, которые вы удалили.
ALTER TABLE my_tab ADD (два НОМЕРА (2), три КОЛИЧЕСТВО (10));
Наконец, добавьте обратно данные для вновь созданных столбцов
UPDATE my_tab SET my_tab.three = (SELECT my_tab_temp.three FROM my_tab_temp WHERE my_tab.one = my_tab_temp.one);
Очевидно, что ваше обновление, скорее всего, будет более сложным, и вам придется обрабатывать индексы и ограничения и не сможет использовать это в некоторых случаях (столбцы LOB и т. д.). Плюс это довольно отвратительный способ сделать это, но таблица всегда будет существовать, и вы получите столбцы в нужном вам порядке. Но действительно ли порядок столбцов имеет значение?