Один раз мне пришлось заняться экспортом XML файлов в базу данных. К XML файлам прилагались XSD файлы описывающие типы данных. Всего XML файлов было штук 300, так что ручной труд тут исключался.
Начав бороздить просторы интернета, Я обнаружил MS'овскую программу для импорта XSD схемы в БД и программу для импорта XML. К сожалению программу от MS мне так и не удалось поставить, а программа для импорта XML работала с уже готовыми таблицами...
Вот так и появилась эта программа. В данный момент программа тестировалась в MS SQL Server'е, в других источниках данных не тестировалась. Так что если кому будет необходимо, можете выступить бета тестером.
Я попытался абстрагироваться от БД в которую происходит запись из-за этого, одним из обязательных параметров выступает параметр Provider. Если запустить программу без параметров, то внизу всего списка будут указаны валидные провайдеры. Строку подключения к источнику данных необходимо указывать в формате ADO.NET к примеру: Data Source=SIGMA;Initial Catalog=TTManager;Integrated Security=True;Application Name="TTManager"
. Хороший ресурс по строкам подключения: ConnectionStrings
В случае если укзан только XML файл, то программа попробует найти XSD файл в папке с XML файлом.
Если XSD файл не найден, то все созданные колонки будут типа NVarChar (для MSSQL)
Программа требует Microsoft .NET Framework 3.5
Xml2Db.exe /C:"Data Source=SIGMA;Initial Catalog=TTManager;Integrated Security=True" /P:System.Data.SqlClient /M:"C:\Test.xml"
Коды выхода приложения:
Добавлен параметр /L.
При установке параметра в True, программа будет определять тип данных автоматически. К примеру, если колонка автоматом определилась как BigInt, а все ряды в колонке содержат числа не более 255, то колонка будет создана с типом TinyInt.
При отсутсвии данных хоть в одном ряду в колонке, колонка создасться как Nullable. В противном случае, она содастся как NOT NULL.
Примечание: Если колонка имеет строковой тип, а в рядах данные будут отсутсвовать, то колонка создастся с минимальной длинной 1, а не 0.