Пару заметок о вашей ситуации. В отличие от SVN и других традиционных систем управления исходным кодом, Git в первую очередь предназначен для размещения 1 проекта на репо . Это ни в коем случае не является жестким правилом, есть способы разместить исходный код из более чем одного проекта в одном репозитории Git. Но вот две причины, чтобы рассмотреть возможность использования вместо Git subtree
или submodule
.
1.) Поскольку Git является распределенной системой управления исходным кодом, репозитории могут увеличиваться в размерах гораздо быстрее. Это может сделать клонирование репо большой болью.
2.) Поскольку Git commit
- это фиксация всего репо, а не только подпапки, merge
в ветке master
(или эквивалент) может стать сложной для новичков. И history
ветви может быть более сложным, чтобы понять, что действительно изменилось в наборе коммитов.
Может быть полезно дать команде разработчиков полного стека один репо для клонирования, чтобы работать над всем решением. В вашем случае я мог бы рассмотреть репозиторий «host», который содержит subtrees
или submodules
для репозиториев Git, содержащих различные компоненты решения полного стека. Это позволило бы разработчику сделать один клон и получить полный исходный код.
Я предлагаю использовать submodule
, если компоненты тесно связаны и часто меняются синхронно. Используйте subtree
, если компоненты интегрируются реже и / или по заданному графику выпуска.
Сделайте класс "CsvDataReader", который реализует IDataReader. Просто реализуйте Read (), GetValue (интервал i), Расположите () и конструктор: можно оставить остальных броском NotImplementedException, если Вы хотите, потому что SqlBulkCopy не назовет их. Используйте чтение для обработки чтения каждой строки и GetValue для чтения значения i'th в строке.
Затем передайте его SqlBulkCopy с соответствующими отображениями столбца, которые Вы хотите.
Я добираюсь, приблизительно 30 000 секунд записей/на вставляют скорость с тем методом.
Если Вы имеете контроль над форматом исходного файла, сделайте его вкладкой разграниченный, поскольку легче проанализировать, чем CSV.
Редактирование: http://www.codeproject.com/KB/database/CsvReader.aspx - tx Mark Gravell.
SqlBulkCopy, если это доступно. Вот очень полезное объяснение использования SqlBulkCopy в ADO.NET 2.0 с C#
Я думаю, что можно загрузить XML непосредственно в DataSet и затем отобразить SqlBulkCopy на базу данных и DataSet.
Эй необходимо вернуться назад к XML вместо csv, затем загрузить тот XML-файл во временной таблице с помощью openxml, очистить данные во временной таблице и затем наконец обработать эти данные.
Я следовал за этим подходом для огромного импорта данных, где мои XML-файлы, оказывается,> 500 МБ в размере и работах openxml как очарование.
Вы были бы удивлены тем, насколько быстрее это будет работать по сравнению с ручными операторами ado.net.