Создание копии таблицы в oracle
В больших таблицах применение приема CREATE TABLE AS SELECT (CTAS) чревато возникновением неприятностей, поскольку Oracle не выполняет фиксации транзакций между операциями вставки и в это время в сегментах отката может закончиться место.Кроме того, эта техника позволяет использовать только типы данных, отличные от LONG.С помощью команды COPY данные из запроса можно копировать в таблицу, находящуюся в той же самой или в удаленной базе данных. Команда COPY позволяет копировать данные всех типов и избегать многих проблем CTAS, поскольку сама предусматривает выполнение фиксации во время копирования данных из исходной таблицы.Синтаксис SQL-команды COPY выглядит следующим образом:
При отсутствии конструкции FROM или TO используется текущее соединение SQL*Plus. Ключевую роль играет параметр opt, на месте которого может находиться одно из перечисленных ниже ключевых слов.
- APPEND. Указывает, что требуется вставить записи в целевую таблицу и создать эту таблицу, если таковой не существует.
- CREATE. Указывает, что требуется создать целевую таблицу и вставить строки в нее.
- INSERT. Указывает, что требуется вставить строки в существующую таблицу.
- REPLACE. Указывает, что требуется удалить существующую таблицу, воссоздать ее заново и затем загрузить данные в нее.
Конструкция USING позволяет указывать в запросе те строки и столбцы, которые требуется скопировать из исходной таблицы.
Совет. Если в таблице содержится столбец типа LONG, использовать для ее копирования метод CTAS нельзя, а команду COPY — можно.
В листинге 4.19 показан пример применения команды COPY. Обратите внимание на то, что символ дефиса (-) служит символом продолжения и позволяет разбивать длинные SQL-операторы на несколько строк. Обязательно удостоверьтесь в том, что не забыли поставить символ продолжения, и ни в коем случае не нажимайте клавишу после ввода первой строки!
При необходимости можно повысить скорость выполнения команды COPY за счет увеличения значений таких параметров SQL*Plus, как ARRAYSIZE, COPYCOMMIT и LONG.
Копирование данных из одной таблицы в другую на одном и том же сервере обычно происходит быстрее в случае применения метода CREATE TABLE AS SELECT, а не команды COPY, потому что команда COPY подразумевает копирование данных сначала с сервера в клиентский интерфейс SQL*Plus и только потом снова в базу данных. Очевидно,что это увеличивает накладные расходы и отнимает больше времени, чем копирование данных в рамках одного и того же сервера.
Oracle/PLSQL CREATE TABLE AS можно использовать, чтобы создать таблицу из существующей таблицы путем копирования столбцов существующей таблицы.
Важно отметить, что при создании таблицы таким образом, новая таблица будет заполнена записями из существующей таблицы (на основе оператора SELECT).
Создание таблицы - путем копирования выбранных столбцов из другой таблицы
Step 5. Configure data comparison options
If you want to copy the data to a table within the same Oracle schema, go to the Mapping page and select the tables for mapping. Here, you can map tables with different names and structures.
Click the Map Objects button on the toolbar, and the Objects Mapping dialog will appear. There, you need to specify the source and target tables and click Map. The objects will then appear in the grid of the Mapping tab. You can skip the table mapping if you want to compare the data between different schemas. Now, click Compare to start the comparison.
Создание таблицы - путем копирования выбранных столбцов из нескольких таблиц
Создание таблицы - путем копирования всех столбцов из другой таблицы
Синтаксис
Синтаксис CREATE TABLE AS в Oracle PL/SQL, для копирования всех столбцов:
Step 8. Continue configuring the data sync
After that, you can configure the data synchronization options as well as check the action plan and the list of warnings on the Summary tab. Click Synchronize to start synchronizing the data.
Step 4. Open the Data Comparison Wizard
Now, you can fill the table with data. To do that, go to the Comparison tab on the menu and open the Data Comparison Wizard. Specify the connection and select the schema.
Configure the rest of the comparison options if required.
Синтаксис
Синтаксис CREATE TABLE AS, для копирования выбранных столбцов в Oracle PL/SQL:
Copy a table with data within the same Oracle database
1. Oracle provides convenient syntax that helps implement the above-mentioned scenarios. By means of the “CREATE TABLE … AS SELECT … ” command, you can create a duplicate table within the same database schema. To create an exact copy of the table preserving the table structure and all the data, execute the query as follows:
2. If you want to limit your data copying to specific columns, indicate the column names after SELECT in the following way:
3. Provided that you have already created a table, and you want to insert the data from the existing table into it, run the following:
Синтаксис
Синтаксис CREATE TABLE AS, для копирования столбцов из нескольких таблиц в Oracle PL/SQL:
CREATE TABLE new_table
AS (SELECT column_1, column2, . column_n
FROM old_table_1, old_table_2, . old_table_n);
Step 1. Open dbForge Studio for Oracle
First of all, you should start dbForge Studio for Oracle and connect to your database, just as shown on the screenshot.
Choose a connection type and enter proper credentials to your Oracle database instance. Test the connection if necessary.
Copy a table without data within the same Oracle database
4. In some cases, you may want to copy the table structure but leave out the data. Similarly, you can use the “CREATE TABLE … AS SELECT … ” command, but this time you need to modify it by adding the WHERE clause that is false and, consequently, will not select any data, for instance:
Step 3. Create a table structure
In the Table Editor that opens, specify the name for the new table and build the structure of the table.
You need to make sure the table columns and column properties are the same as the columns of the existing table.
Click Apply Changes and check that you have created a new table in the Database Explorer.
Step 2. Create a new table
In the Database Explorer, click on the connection node and find the Tables folder. Right-click the Tables folder and select New Table.
Пример
Рассмотрим на примере CREATE TABLE AS, который показывает, как создать таблицу путем копирования выбранных столбцов из другой таблицы.
Например:
Этот пример будет создать новую таблицу с наименованием suppliers . Новая таблица будет включать в себя только указанные столбцы ( company_id , address , city , state и zip ) из таблицы companies .
Кроме того, если в таблице companies будут записи, то новая таблица suppliers будет заполнена записями, возвращенными оператором SELECT.
Step 7. Define synchronization options
In the Data Synchronization Wizard that opens, you can decide on your further actions as to the synchronization script.
You can open the script in the internal editor, save it for later use, or execute it directly against the target.
Copy a table from one Oracle database to another
5. To copy a table from one database schema to another one, you need to apply an SQL*Plus COPY command. This powerful command allows you to actually copy data between different servers. However, we will focus on copying a table between different database schemas in Oracle. The basic syntax for the command looks as follows:
Let’s define the important prerequisites for using this command:
- You need to have the access to the specified tables and know the valid credentials for the local and remote databases in the FROM and/or TO clause.
- You can indicate the new names for the columns in the destination table, otherwise, they will have the same names by default.
- You have to choose between four actions—REPLACE, CREATE, INSERT, or APPEND, the one that suits your particular case.
- In the USING clause, you need to write a query that will be used to specify the data for copying. Here, you are free to use any type of SELECT.
To create a new table and then copy the data, use CREATE; to fill the created table with data, use INSERT; to replace the created table together with its contents, use REPLACE. Besides, you can use APPEND, which works both ways: if you have created a new table, it will fill it with data; if you haven’t, it will first create a table and then insert the necessary data.
Let’s see an example of the COPY command that copies three columns from the source table and copies only the rows in which the EMPLOYEE_ID value is greater than 50:
копировать схему (генерировать DDL) через SSMS UI
в SSMS разверните базу данных в Обозреватель Объектов перейдите к таблицы щелкните правой кнопкой мыши на таблице и выберите Таблицы Скрипт, Создать, Новое Окно Редактора Запросов. Найдите и замените (CTRL + H) изменить имя таблицы (т. е. поставить ABC на Найти
2-й вариант: используйте SSIS, то есть щелкните правой кнопкой мыши на базе данных в обозревателе объектов > все задачи > экспорт данных
- источник и цель: ваш DB
- исходная таблица: ABC
- целевая таблица: ABC_1 (таблица будет создана)
вам нужно написать SSIS, чтобы скопировать таблицу и ее данные, ограничения и триггеры. У нас есть в нашей организации программное обеспечение под названием KAL Admin от kalrom Systems, которое имеет бесплатную версию для загрузки (я думаю, что функция копирования таблиц необязательна)
Если вы хотите дублировать таблицу со всеми ее ограничениями и ключами, выполните следующие действия:
- откройте базу данных в среде SQL Management Studio.
- щелкните правой кнопкой мыши на таблицу, которую вы хотите дублировать.
- выберите таблицу сценариев как -> создать в - > новое окно редактора запросов. Это создаст сценарий для воссоздания таблицы в новом окне запроса.
- изменить имя таблицы и относительные ключи и ограничений скрипт.
- выполнить скрипт.
затем для копирования данных запустите следующий скрипт:
используйте sql server manegement studio или netcat, и это будет легче манипулировать sql
When working with an Oracle database, you may need to create a copy of the table to test or develop your application properly. We have selected the best ways to accomplish different types of table copying in Oracle and provided an accurate description of each method.
In this article, you will learn how to perform the following:
- Create an exact copy of the table within the same schema
- Copy only the table structure without copying data
- Insert duplicate data into an already existing table
- Copy a table between different database schemas
- Use the GUI tool to implement any type of table copying
Пример
Рассмотрим пример CREATE TABLE AS, который создаст таблицу путем копирования всех столбцов из другой таблицы. Например:
Этот пример будет создавать новую таблицу suppliers (поставщики), в которую включены все столбцы из таблицы companies (компании).
Если в таблице companies нет записей, то новая таблица suppliers будет заполнена записями, возвращенными оператором SELECT.
Step 9. Make sure the tables are equal
Perform the data comparison one more time to ensure the tables are identical. Congratulations! You have cloned an Oracle table!
Step 6. Analyze the comparison results
View the comparison results in the Data Comparison document. Here, you can select the necessary objects for synchronization and initiate the synchronization by clicking the Green Arrow.
Create a duplicate table
with dbForge Studio for Oracle
Running queries manually requires significant time spending, that’s why if you strive to be efficient, you will probably want to use an Oracle IDE that will help you achieve your goals within a convenient graphical user interface and boost your flexibility with an opportunity to adjust the process to your requirements.
Conclusion
In this article, we have reviewed various ways of creating a duplicate table in Oracle: we have started by executing Oracle SQL commands and then looked at the way the same procedures are performed via an intuitive interface of dbForge Studio for Oracle. The IDE delivers robust comparison functionality and empowers you to take your Oracle database interaction to a whole new level. Check out other useful features provided by this powerful Oracle GUI tool!
Каков наиболее эффективный способ создания копии таблицы с данными и без ограничений (первичный ключ и внешний ключ) в Oracle? что-то похожее на запрос ниже.
Это нормально, если нам нужно сбросить ограничения вручную после копирования, но создание копии должно быть быстрым.
сколько строк в таблице, какие типы данных в таблице, какое оборудование у базы данных, какая версия Oracle, какая самая эффективная: самая быстрая?
Что не так с утверждением, которое у вас есть сейчас ( create table t1 as select . )? Это должно делать именно то, что вы хотите. Это не создаст никаких ограничений для новой таблицы.
FYI - совет создать таблицу без данных. Добавить эту статью , где на оператор выбора: WHERE 1 = 2 . Это гарантирует, что никакие данные не будут выбраны, что приведет к пустой таблице.
Использование CREATE TABLE AS SELECT оператора в том виде, в каком оно есть сейчас, вероятно, самый эффективный способ сделать это. Если нет, то довольно близко.
Он не создает ограничений (кроме not null ограничений) или индексов, поэтому вам придется создавать их вручную после завершения операции.
Вы можете указать, что операция должна быть распараллелена, используя parallel ключевое слово, хотя я считаю, что эта функция доступна только в Enterprise Edition. Пример:
Можно даже указать количество используемых потоков, добавив целочисленный параметр сразу после parallel ключевого слова. Но по умолчанию он распараллеливается в соответствии с доступными процессорами на сервере.
Также можно сделать операцию еще быстрее, избегая создания журнала повторов. Это делается путем указания nologging ключевого слова:
Однако, поскольку журнал повторов не создается, операцию восстановить невозможно. Итак, если вы собираетесь использовать это, вам следует подумать о резервном копировании базы данных сразу после завершения операции. Я бы лично не стал использовать эту опцию, если по какой-то причине эта дополнительная производительность не является критичной.
Для получения дополнительной информации о том, как использовать дополнительные параметры с create table as select оператором, см. Документацию: CREATE TABLE .
Пример
Рассмотрим пример CREATE TABLE AS, который показывает, как создать таблицу путем копирования выбранных столбцов из нескольких таблиц.
Например:
У меня есть таблица ABC в базе данных DB. Я хочу создать копии ABC с именами ABC_1, ABC_2, ABC_3 в той же БД. Как это сделать, используя среду Management Studio (желательно) или SQL-запросы ?
Это для SQL Server 2008 R2.
использовать SELECT . INTO :
это создаст новую таблицу ABC_1 , который имеет ту же структуру столбца ABC и содержит те же сведения. Однако ограничения (например, ключи, значения по умолчанию) не копируются.
вы можете запускать этот запрос несколько раз с другим именем таблицы каждый раз.
Если вам не нужно копировать данные, только для создания новой пустой таблицы с той же структурой столбцов, добавьте WHERE п. с ложь выражение:
Читайте также: