phpMyAdmin может обрабатывать импорт CSV. Вот шаги:
Это примечание, которое я подготовил для моего будущего использования и поделился здесь, если кому-то может помочь.
У меня была такая же проблема, когда я узнал, что realmObjects
должен наследовать непосредственно класс RealmObject
(без поддержки наследования). Чтобы вернуться к преимуществам полиморфизма, я рассмотрел аналогичное решение для вас в сочетании с некоторыми трюками состава, которые позволили бы избежать дублирования атрибутов.
«Обсуждение дешево показывает мне код».
Примеры кода
interface IPerson { String getName(); } class Person extends RealmObject implements IPerson { String name; @Override public String getName() { return name; } } interface IWorker extends IPerson { int getSalary(); } class Worker extends RealmObject implements IWorker { Person person; int salary; @Override public String getName() { return person.getName(); } @Override public int getSalary() { return salary; } }
Некоторые преимущества
Вам не придется дублировать свои атрибуты в каждом расширяющемся классе.
Полиморфизм вернулся! Например, теперь вы можете имитировать листинг (с помощью getPerson () в этом примере).
Некоторые ограничения
При использовании библиотеки сериализации, использующей отражение (предположим, что это Gson), ваш сериализованные модели будут иметь встроенные атрибуты их родителей. Не что-то, что у вас было бы, если бы вы использовали классическое наследование.
Пример с JSON
Предположим, что Джон Доу делает 500 $ в месяц. (Он - рабочий и прав человека?).
С классическим наследованием Джон Доу будет выглядеть так:
{ "name":"John Doe", "salary": 500 }
Но с этим обходным путем наследования ...:
{ "person" : { "name":"John Doe" }, "salary": 500 }
Надеюсь, что это поможет!
Примечание
К сожалению, PrimaryKeys необходимо дублировать.
Бонус
Вы может захотеть проверить RealmFieldNamesHelper , библиотеку, сделанную Christian Melchior ", чтобы сделать запросы в Царстве более безопасными типами.
Если вы используете Kotlin, разделение полей через интерфейс становится еще более тривиальным:
interface PersonBase {
var name: String?
var salary: Int
}
Затем
class Person: RealmObject(), PersonBase {
}