У меня есть функция, которая при Int
возвращает список списков строк.
fetchParts :: Int -> [[String]]
Вот как выглядит вывод
[["title", "some title"], ["rate", "2.4"], ["dist", "some string"], ["tr", "1"], ["td, "2"] ..]]
Длина вывода может быть переменной.Только первые 3 списка могут присутствовать в 100% случаев.
Последующая часть списка может быть
["a", "1"], ["b", "2"] ..
или
["some", "1"], ["part", "2"], ["of", "3"] ..]
или
["ex1", "a"], ["ex2", "b"], ..]
или какой-либо другой комбинации строк.
И я хочу добавить этот вывод в файл базы данных sqlite3,Для этого я использую HDBC и HDBC.Sqlite3 .
Чтобы добавить что-либо в файл базы данных, я запускаю такие функции
initialConnection <- connectSqlite3 "src/parts.db"
run initialConnection partsEntry []
commit initialConnection
disconnect initialConnection
, где partsEntry
- простая строка SQL, подобная этой
partsEntry = "INSERT INTO PARTSDATA ( title, rate, dist, ...) VALUES ( "some title", "2.4", "some string", ...)
, где
( title, rate, dist, ...)
от head <$> fetchParts 1
и
("some title", "2.4", "some string" ...)
от last <$> fetchParts 1
Проблема в том, что если столбец "some"
не существует, код выдаст ошибки.
Что я хочусделать что-то вроде этого
- , если столбец
"abc"
не существует, добавить столбец "abc"
и вставить значение "this"
в текущую строку - , если столбец
"abc"
существует, просто вставьте значение "this"
в текущую строку
Но я не уверен, как это сделать.