Простой конвертер файлов CSV в SQL Java - PullRequest
3 голосов
/ 17 ноября 2010

Есть ли более простой способ конвертировать файлы CSV в файл SQL, чем этот?:

BufferedReader input = new BufferedReader(new FileReader(new File("c:\\file.csv")));     
Writer output = new BufferedWriter(new FileWriter(new File("c:\\file.sql")));

try {
  String line = null;
  String[] st = null;

  while ((line = input.readLine()) != null) {
    st = line.replace("\"","").split(",");

    output.write("INSERT INTO `table` "
                    + "(`column_id`, `column1`, `column2`) VALUES "
                    + "(" + st[2] + ", " + st[0]  + ", " + st[1] +")"
                    + ";"
                    + "COMMIT;\n");

  }
} finally {
  input.close();
  output.close();
}

Ответы [ 2 ]

1 голос
/ 17 ноября 2010

Используйте одну из доступных библиотек синтаксического анализатора csv, например, one . В противном случае вам понадобится небольшой конечный автомат для работы с запятыми внутри строк в кавычках и т. Д.

Я также вижу, что вы не выполняете SQL, а записываете SQL-операторы в файл. Большинство баз данных поставляются с утилитой загрузки, которая будет принимать CSV-файл в качестве входных данных.

1 голос
/ 17 ноября 2010

Если вы не найдете более простого решения, опасайтесь простого разделения данных CSV. Исходя из опыта, это действительно CSV, который сломает простое решение:

"field 1a, field 1b", field2, "field 3a, field3b", field4

Я бы посоветовал взглянуть на такую ​​библиотеку, как opencsv , чтобы обработать CSV для вас.

...