0

У меня есть SQL файл сценария со всеми вставными statments, как показано нижеКак хранить все операторы вставки из файла сценария в ArrayList

INSERT INTO PUBLIC.EMPLOYEE(ID, NAME) VALUES 
    (1, 'Madhava'), 
    (2, 'Rao'), 
    (3, 'Tmr'); 

    INSERT INTO PUBLIC.ADDRESS(ID, CITY) VALUES 
    (1, 'Bangalore'), 
    (2, 'Chirala'), 
    (3, 'Pune'); 

Как я хранить каждый Постулаты индивидуально в ArrayList как ниже

INSERT INTO PUBLIC.EMPLOYEE(ID, NAME) VALUES (1, 'Madhava'); 
INSERT INTO PUBLIC.EMPLOYEE(ID, NAME) VALUES (2, 'Rao'); 
INSERT INTO PUBLIC.ADDRESS(ID, CITY) VALUES(1, 'Bangalore'); 
INSERT INTO PUBLIC.ADDRESS(ID, CITY) VALUES(2, 'Chirala'); 

Как разобрать файл sql и хранить каждый элемент отдельно в Arraylist, как указано выше?

+0

Вы можете сделать строку sp загорается символ полуколонии и формирует список массивов таким образом. – codechurn

ответ

0

Давайте предположим, что мы имеем

String data = 
      " INSERT INTO PUBLIC.EMPLOYEE(ID, NAME) VALUES\r\n" 
     + " (1, 'Madhava'),\r\n" + " (2, 'Rao'),\r\n" 
     + " (3, 'Tmr'); \r\n" + "\r\n" 
     + " INSERT INTO PUBLIC.ADDRESS(ID, CITY) VALUES\r\n" 
     + " (1, 'Bangalore'),\r\n" + " (2, 'Chirala'),\r\n" 
     + " (3, 'Pune'); "; 
List<String> inserts = new ArrayList<>(); 
Scanner sc = new Scanner(data); //you can also use new Scanner(new File("location/of/your/textfile.sql")); 

Ваше решение может выглядеть так (мы используем пустые строки для разделения данных на разделы):

String command = ""; 
while (sc.hasNextLine()) { 
    String line = sc.nextLine().trim(); 
    if (line.isEmpty() || command.isEmpty()) { 
     command = line; 
    } else { 
     String values = line.replaceAll(",$", ";");//replace `,` at the end with ; 
     inserts.add(command + " " + values); 
    } 
} 

Или, может быть проще (мы просто набор команд для линии который начинается с «INSERT» и создает конкатенацию командной и непустой строки):

String command = ""; 
while (sc.hasNextLine()) { 
    String line = sc.nextLine().trim(); 
    //ignore empty lines 
    if (!line.isEmpty()) { 
     if (line.startsWith("INSERT ")) { 
      command = line; 
     } else { 
      //lets change `),` to `);` 
      String values = line.replaceAll(",$", ";"); 
      inserts.add(command + " " + values); 
     } 
    } 
} 
+0

Спасибо ... очень полезно – Madhava

Смежные вопросы