Oracle
 sql >> база данни >  >> RDS >> Oracle

4 начина за вмъкване на няколко реда в Oracle

Ако използвате СУБД като MySQL или SQL Server, синтаксисът за вмъкване на множество редове in в таблица с един израз е доста ясен.

Но ако използвате Oracle Database, ще трябва да използвате различен синтаксис.

Опция 1:Използвайте SELECT Запитване

Първата опция е да използвате SELECT изявление за всеки ред, който трябва да бъде вмъкнат:

INSERT INTO Products (ProductId, ProductName, Price) 
    WITH p AS ( 
        SELECT 1, 'Left Handed Screwdriver', 10.50 FROM dual UNION ALL 
        SELECT 2, 'Right Handed Screwdriver', 22.75 FROM dual UNION ALL 
        SELECT 3, 'Bottomless Coffee Cup (4 pack)', 15.00 FROM dual UNION ALL 
        SELECT 4, 'Urban Dictionary Version 2.3', 75 FROM dual UNION ALL
        SELECT 5, 'Beer Water', 15 FROM dual
  )
SELECT * FROM p;

Трябва да включим FROM dual за всеки ред, UNION ALL за да комбинирате всеки SELECT оператор, както и крайния SELECT изявление.

Вариант 2:Използвайте INSERT ALL

Друга възможност е да използвате INSERT ALL изявление:

INSERT ALL 
    INTO Products ( ProductId, ProductName, Price ) VALUES ( 1, 'Left Handed Screwdriver', 10.50 )
    INTO Products ( ProductId, ProductName, Price ) VALUES ( 2, 'Right Handed Screwdriver', 22.75 )
    INTO Products ( ProductId, ProductName, Price ) VALUES ( 3, 'Bottomless Coffee Cup (4 pack)', 15.00 )
    INTO Products ( ProductId, ProductName, Price ) VALUES ( 4, 'Urban Dictionary Version 2.3', 75 )
    INTO Products ( ProductId, ProductName, Price ) VALUES ( 5, 'Beer Water', 15 )
SELECT 1 FROM dual;

Не забравяйте да включите последния ред за избор от dual .

Опция 3:Използвайте няколко INSERT INTO Изявления

Друг начин да го направите е да използвате INSERT INTO изявления:

INSERT INTO Products VALUES ( 1, 'Left Handed Screwdriver', 10.50 );
INSERT INTO Products VALUES ( 2, 'Right Handed Screwdriver', 22.75 );
INSERT INTO Products VALUES ( 3, 'Bottomless Coffee Cup (4 pack)', 15.00 );
INSERT INTO Products VALUES ( 4, 'Urban Dictionary Version 2.3', 75 );
INSERT INTO Products VALUES ( 5, 'Beer Water', 15 );

Може да откриете, че това работи много по-бавно от предишните два метода, ако имате много редове за вмъкване.

Опция 4:Използвайте SQL*Loader

Ако имате много редове за вмъкване и може би ако го правите редовно, може да искате да разгледате SQL*Loader.

SQL*Loader е помощна програма, която ви позволява да зареждате данни от външни файлове в таблици на Oracle Database.

Използвайки горните примери, съдържанието на нашия контролен файл може да изглежда така:

load data
infile 'products.csv'
into table Products
fields terminated by "," optionally enclosed by '"'              
( ProductId, ProductName, Price )

Където products.csv е файлът, който съдържа всички редове за вмъкване.

И след това зареждането на данните може да изглежда така:

sqlldr <username> control=load_products.ctl

Където <username> е нашето потребителско име и load_products.ctl е нашият контролен файл.

Вижте документацията на Oracle за SQL*Loader за повече информация как да го използвате.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване в Oracle Nested Table в Java

  2. Oracle Insert чрез Изберете от множество таблици, където една таблица може да няма ред

  3. Как се съхраняват датите в Oracle?

  4. ORA-01219:базата данни не е отворена:заявки са разрешени само за фиксирани таблици/изгледи

  5. Използвайте tnsnames.ora в Oracle SQL Developer