2014-01-03 3 views
-1

У меня есть довольно большой набор данных от клиента, который находится в csv, и мне нужно, чтобы он был преобразован в sqlite на Android. Поэтому у меня есть метод, который я написал для этого -Java/Android CSV to SQLite техническая проблема

db.beginTransaction();  
while ((line = bufRdr.readLine()) != null) { 
     try { 
      insertValues = line.split(","); 

      if (flag_is_header) { 
       row = this.insertRow(insertValues[0], insertValues[1], insertValues[2], insertValues[3], insertValues[4]); 

      } else { 
       flag_is_header = true; //so it skips the first line 
      } 
     } catch (Exception e) { 
      Log.e(TAG,"row# "+row+" error"); 
     } 

    } 
    db.setTransactionSuccessful(); 
    db.endTransaction(); 

и он отлично работает. 9k строк, вставленных менее чем за 5 секунд.

Проблема в том, что некоторые данные имеют разрывы строк внутри ячеек. т.е. это -

Steps needed 
1 ..... 
2 ..... 
3 ..... 

может быть значение одной ячейки, так что, когда мой цикл попадает разрывы строк (в клетке) он считает, что новая строка будет вставлена ​​и ломает код.

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

Благодарим за помощь.

ps. Я не могу предварительно заполнить базу данных и отправить ее по логистическим причинам.

ответ

1

При экспорте вы можете заменить разрывы строк в ячейках (скажем) вкладками (или сочетанием странных символов, наприме𠫧 # §»).
Затем, когда повторный импорта заменить вкладки с разрывами строк снова

[EDIT]

О, это из Excel ... приятно. Это еще лучше!
Вы можете экспортировать строки с ячейками, расположенными под символом "".
Поступая таким образом, вы знаете, что принадлежит ячейке и является истинным ограничителем строк.
При импорте просто удалите лишние кавычки.

[EDIT]

В Excel при экспорте в CSV, вы можете выбрать, чтобы сохранить клетки beding «цитировал», так что все клетки будут котироваться.

Как:

"CellA1", "CellA2", "This is a cell with spaces", "CellA4" 
"CellB1", "CellB2", "CellB3", "This is a cell 
with 
carriage returns" 

Это автоматизировано при экспорте, если вы решили сделать так

+0

я люблю его. есть ли способ преуспеть сделать это? – Shmuel

+0

см. Мой отредактированный ответ. –

+0

я вижу. Вы имеете в виду добавление колонки в конце с помощью ""? или есть лучший способ сделать это? – Shmuel