Импорт файла CSV в Java - PullRequest
       1

Импорт файла CSV в Java

0 голосов
/ 23 июня 2011

В настоящее время я работаю над программой, которую нужно читать в файле CSV на Java.Теперь у меня есть файл для правильной загрузки, это не проблема, и я хочу добавить информацию о пользователе в базу данных из файла CSV.однако это выходит как список значения.ниже мой формат файла

first_name1, last_name1,(group1,group2,group3)
first_name2, last_name2,(group1,group2,group3)

, поэтому я хочу добавить его в базу данных как

firstname1,lastname1,group1
firstname1,lastname1,group2
firstname1,lastname1,group1
firstname2,lastname2,group1
...

, так как мне все это разделить и сохранить в базе данных?

В файле есть ряд записей, которые я хочу поместить в базу данных, поэтому, если у кого-то тоже есть идеи по этому поводу, пожалуйста, дайте мне знать.,

Ответы [ 3 ]

1 голос
/ 23 июня 2011
  • Чтение файла (BufferedFileReader)
  • Итерация по строкам (цикл for)
  • Разбить строки на переменные (StringTokenizer)
  • Составьте запрос (String)
  • Выполнить запрос к базе данных (SQL)

    public void test(String line) {
        List<String> list = new ArrayList<String>();
        StringTokenizer t1 = new StringTokenizer(line, ",");
        String firstName = (String) t1.nextElement();
        String lastName = (String) t1.nextElement();
        String temp = (String) t1.nextElement();
        temp = temp.replaceAll("(", "").replaceAll(")", "");
        List<String> usergroups = new ArrayList<String>();
        StringTokenizer t2 = new StringTokenizer(temp, ",");
        while (t2.hasMoreElements()) {
            String element = (String) t2.nextElement();
            usergroups.add(element);
        }
    }
    
0 голосов
/ 23 июня 2011

Вы должны посмотреть в openCSV.Они поддерживают отображение javabeans, которое позволит вам присвоить имена столбцам и отобразить их в DTO: http://opencsv.sourceforge.net/#javabean-integration Одна проблема, которую я вижу, - это вложение группы, которое вы используете с круглыми скобками.Если у вас есть какой-либо контроль над созданием файла, я бы заменил разделитель внутри '(' и ')' на нечто иное, чем запятая.Таким образом, ваш CSV-парсер может игнорировать их в первом проходе.У вас будет такой компонент:

firstname: John
lastname: Doe
tempGroups: (group1;group2)

Затем вы можете легко разделить группы, используя

String[] groups = tempGroups.split("[();]")

. Чтобы поместить это в БД, выполните итерацию по коллекции компонентов и для каждого компонента.переберите коллекцию групп, чтобы добавить каждого отдельного пользователя в свою группу.

for (User user:Users) {
   for  (String group:user.getGroups()) {
       db.insert(user.getFirstname(), user.getLastName(), group);
   }
}
0 голосов
/ 23 июня 2011

Есть библиотека под названием opencsv , которая сделает всю тяжелую работу за вас. Он автоматически обрабатывает такие проблемы, как запятые в двойных кавычках и т. Д.

Определение зависимости maven:

    <dependency>
        <groupId>net.sf.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>2.1</version>
    </dependency>

Я использовал это и могу рекомендовать это.

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