Вопрос по c#, database, xml, sql – Импорт данных из файла XML в базу данных SQL

5

Можно ли импортировать данные из файла XML в базу данных SQL, и если да, то как это будет сделано. У меня есть XML-файл, который содержит около 50 000 записей, и мне нужно создать приложение, которое будет манипулировать этими данными (в основном, для чтения и сравнения) - поэтому я обеспокоен тем, что манипулирование этим объемом данных (и есть очень вероятная возможность что в будущем будет еще больше) будет очень медленно и неэффективно. Если есть другой вариант, который, по вашему мнению, будет лучше, пожалуйста, сообщите. Спасибо

Если вы используете какой-либо инструмент MS BI, тогда вы, вероятно, можете подумать об использовании SSIS для загрузки данных из XML, выполнения манипуляций, а затем выгрузки данных на сервер SQL. praveen
Почему вы не делаете манипуляции в базе данных. Используя Linq to XML, вы можете прочитать XML-файл, а затем сохранить его как коллекцию и отправить его в виде XML-ввода в хранимую процедуру, где вы выполняете все манипуляции. praveen
Вы можете использовать объект XPathNavigator для анализа XML, а затем использовать объект SqlCommand для вставки данных в таблицы. В Интернете есть много примеров кода для обоих объектов. eMi

Ваш Ответ

6   ответов
1

Существуют такие продукты, как Snaplogic, которые имеют «привязки» имеется в виду коннекторы для чтения XML-файла, его анализа, а затем перемещения в базу данных без необходимости писать какие-либо строки кода. Посмотри наSnapLogic.

2

Попробуйте посмотреть на инструмент SSIS от Microsoft Sql Server Integration Services

http://msdn.microsoft.com/en-us/library/ms141026.aspx

http://www.microsoft.com/sqlserver/en/us/solutions-technologies/enterprise-information-management/integration.aspx

С помощью этого инструмента вы можете создавать и сохранять пакеты импорта, с фильтрацией и пользовательскими настройками. Возможно, вы можете использовать это как полное решение вашей проблемы.

4

Ты можешь использоватьМастер импорта и экспорта SQL Server, Вы также можете посмотреть вСлужбы интеграции SQL Server, Если вы хотите использовать C #, то SQL-сервер поддерживает тип данных XML. Вы можете использовать это.

Вы также можете попробовать прочитать данные в наборе данных, а затем использоватьBulkInsert вставить данные в SQL Server

DataSet reportData = new DataSet();
reportData.ReadXml(Server.MapPath("yourfile.xml"));
SqlConnection connection = new SqlConnection("DB ConnectionSTring");
SqlBulkCopy sbc = new SqlBulkCopy(connection);
sbc.DestinationTableName = "yourXMLTable";

EDIT: Для проверки SQL Server 2005Мастер импорта / экспорта SQL Server 2005

@NDraskovic Проверить эту ссылкуmsdn.microsoft.com/en-us/sqlserver/bb671393.aspxТакже посмотрите, можете ли вы найти службы DTS или Data Transformation.
Хорошо, я посмотрю, что я могу сделать. Спасибо за Ваш ответ NDraskovic
@NDraskovic, см.databasejournal.com/features/mssql/article.php/3580216/… Я также обновил свой ответ
Да, я использую C #. Какой SQL-сервер мне нужен? На моем компьютере установлен SQL Server 2005, и я не могу найти инструменты, перечисленные в ссылке, которую вы мне дали (Мастер импорта и экспорта). У меня есть только инструменты настройки. NDraskovic
0

Если вам нужно преобразовать данные из XML в SQL, самый быстрый способ - использовать такой инструмент преобразования, какhttps://sqlizer.io

Он будет конвертироваться за считанные секунды и предоставит вам правильно отформатированные таблицы и данные INSERT. Это сэкономит вам часы на ручное выполнение или написание сценария.

Кроме того, в отличие от других инструментов, он не публикует какие-либо данные в Интернете (SQLizer удаляет их) и бесплатен для небольших файлов.

Вы также можете конвертировать файлы xlsx, xls или csv и JSON с помощью SQLizer.

Надеюсь это поможет

1

Другой вариант для рассмотрения:

Учитывая следующее xml

<?xml version="1.0" standalone="yes" ?>
<Clients>
  <Client>
    <Id>1</Id>
    <FirstName>FirstName1</FirstName>
    <LastName>LastName1</LastName>
  </Client>
  <Client>
    <Id>2</Id>
    <FirstName>FirstName2</FirstName>
    <LastName>LastName2</LastName>
  </Client>
</Clients>

Вы можете использовать следующий запрос для выбора содержимого.

select 
    x.a.query('Id').value('.', 'int') as Id
    , x.a.query('FirstName').value('.', 'nvarchar(50)') as FirstName
    , x.a.query('LastName').value('.', 'nvarchar(50)') as LastName  
from 
( 
    select CAST(x AS XML) from OPENROWSET
    (BULK 'C:\Users\jmelosegui\Desktop\Clients.xml', SINGLE_BLOB) as T(x)
) T(x)
cross Apply x.nodes('Clients/Client') as x(a)

Как только это будет сделано, вы можете присоединиться к другим таблицам или выполнить сопоставление после вставки данных, и все со стороны сервера SQL.

1

В ситуации я получил требование, как прочитать данные из XML-файла и отправить этот XML-файл в качестве параметра для хранения процедуры Полезная ссылка http://www.aspdotnet-suresh.com/2012/12/aspnet-send-xml-file-as-parameter-to.html

Похожие вопросы