2010-12-10 2 views
0

Привет У меня довольно сложная схема (.xsd) и .xml-файлы. Некоторые узлы имеют около 70 атрибутов и около 10-15. Я использовал xsd2code для создания классов C#, а затем десериализовал свой xml-файл. Я создал базу данных на основе моего .xsd класса с помощью приложения xsd2db. Поэтому я прочитал свой XML-файл и должен его сохранить в базе данных. У меня 74 класса/таблицы с отношениями первичного/внешнего ключа. Я посмотрел в SqlBulkCopy - для этого мне кажется, что мне нужно преобразовать все в datatables/rows/columns. И мне нужно будет учитывать иерархию для удовлетворения внешних ключей. Есть ли другой способ сделать это? Какой будет лучший (самый быстрый) подход? Спасибо ДженниНужно загрузить несколько таблиц сервера SQL из приложения C#

ответ

0

Существуют различные способы, чтобы импортировать файл XML либо через T-SQL, SSIS, VB Script и т.д.

К сожалению только Google и размещать ссылки, но я думаю, что SQL белка нашел самый простой способ для получения файла XML в SQL Server 2005 является использование T-SQL:

http://www.lockergnome.com/sqlsquirrel/2008/05/22/how-to-import-a-xml-file-into-sql-server-2005/

http://www.lockergnome.com/sqlsquirrel/2008/05/23/how-to-turn-imported-xml-into-a-relational-format-in-sql-server-2005/

SQLTeam кажутся думать, что T-SQL также является WTG: http://weblogs.sqlteam.com/mladenp/archive/2007/06/18/60235.aspx

+0

Спасибо, Джереми. Я попробовал SSIS. Сначала я подумал, что это лучший способ сделать это. Если я не смогу разобраться в другом, я поеду с SSIS. Но для этого требовалось, чтобы мои файлы db и xml находились на одном сервере, и почти все типы данных не совпадали, поэтому мне нужно преобразовать типы данных для 15-70 столбцов в каждой из 74 таблиц. Я нашел – Boroda

+0

Я нашел SQLXML Bulk Load - что тоже похоже на отличное решение: http://msdn.microsoft.com/en-us/library/ms171878.aspx, за исключением того, что у меня нет библиотеки типов SQL Server SQLXML Bulkload 4.0 (xblkld4 .dll) - и его необходимо установить отдельно (SQLXML поддерживает XML-поддержку для базы данных SQL Server), и это не вариант для меня. – Boroda

+0

@Boroda Вот сообщение, которое поможет вам найти SQLXML (xblkld4.dll) http://social.msdn.microsoft.com/Forums/en/sqlxml/thread/f974763f-b189-456d-8b9a-6100d46cae15. SQLXML Bulkload выглядит сверху для импорта XML-файлов, особенно если его отключить: http://msdn.microsoft.com/en-us/library/ms171806.aspx. Я лично предпочел бы использовать комбинацию из OPENROWSET (BULK '' '+ @xmlFileName +' '', SINGLE_BLOB) AS XMLDATA и массировать данные с помощью SQL, LINQ-to-XML и SQLSMO (sql mgt objects). Это однократная операция? и какая версия SQL-сервера у вас есть? –

Смежные вопросы