Как разделить строку и вставить каждое значение как запись в базу данных? - PullRequest
0 голосов
/ 06 января 2020

Я читаю из файла, где каждая строка имеет 3-4 значения, которые разделены вкладкой. Я пытался разбить строку (на основе вкладок) и сохранить их в свои String, а затем я sh эти значения в метод, который делает значения SQL statement до INSERT INTO в таблица как новая запись.

Моя проблема в том, что метод split() не совсем подходит для меня, так как он дает мне ArrayOutOfBoundsException для второго значения. Но я почти уверен, что есть более простой способ сделать то, что я пытаюсь сделать.

В настоящее время у меня есть:

// --------- Reading the topURLs file ---------

        try {
            scan = new Scanner (new File("TestURL"));

            while (scan.hasNextLine()) {
                String line = scan.nextLine();
                String[] SQLValues = line.split("\\t");
                String rank = SQLValues[0];
                String websiteName = SQLValues[1];
                String domain = SQLValues[2];
                insertInto(conn, tableName, rank, websiteName, domain);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

И мой insertInto метод на тот случай, если вы захотите см .:

public static void insertInto(Connection conn, String name, String rank, String websiteName, String domain) {
        Statement st = null;

        int rankInt = Integer.parseInt(rank);
        try {
            st = conn.createStatement();
            st.execute("INSERT INTO " + name + "VALUES ('" + rankInt + "', '" + websiteName + "', '" + domain + "')");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

Я знаю, что это грязно, это все, что я знаю до сих пор. file TestURLs в настоящее время имеет две строки для тестирования (они разделены с помощью вкладок в моем файле, я просто не знаю, как показать это здесь):

1 google com

2 cheese com

Что-то мне не хватает, что вызывает exception, упомянутый выше? Я думал, что когда я split line, он поместит каждое отдельное слово в другой индекс массива wordsArray. Вместо этого кажется, что в индексе есть только один элемент.

Если есть лучший способ сделать то, что я пытаюсь сделать, то есть извлечь строку из файла, разделить значения и положить их в таблицу в качестве новой записи - не могли бы вы указать мне правильное направление?

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 06 января 2020

попробуйте использовать

String[] SQLValues = line.split("\\s+");

. Вы можете использовать жадное регулярное выражение, которое будет соответствовать любому количеству пробелов, включая табуляции. Для этой цели вы можете использовать регулярное выражение "\ s +".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...