поделитесь опытом!!!
с помощью чего и быстро, что самое главное т.к. много данных грузить надо, можно загрузить данные в БД SQL. Мои попытки увенчались провалом .... т.к. загрузка по моим расчетам примерно сутки ... а это критично...
// схема документа используемая при загрузке
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Customer">
<xsd:complexType>
<xsd:attribute name="ID" type="xsd:integer" />
<xsd:attribute name="Cod" type="xsd:integer" />
<xsd:attribute name="Date" type="xsd:float" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
// сам документ важно количество записей, т.к. их много
<ROOT>
<Customer ID="1" Cod="1" Date="38157"/>
<Customer ID="2" Cod="2" Date="38250"/>
......
<Customer ID="1000" Cod="2"/>
....
<Customer ID="1000000" Cod="2" Date="38311"/>
</ROOT>
Пробовал:
Delphi: — через Ole объекты: SQLXML 3.0
cmd := CreateOleObject('ADODB.Command');
conn := CreateOleObject('ADODB.Connection');
strmIn := CreateOleObject('ADODB.Stream');
strmOut := CreateOleObject('ADODB.Stream');
// Open a connection to the instance of SQL Server.
conn.Provider := 'SQLOLEDB';
conn.Open('server=(local); database=database; uid=UserName; pwd=pwd; ');
conn.Properties('SQLXML Version') := 'SQLXML.3.0';
cmd.ActiveConnection := conn;
strmin.Open;
strmin.position := 0;
strmin.Charset := 'Windows-1251';
strmin.Type := 2;
strmin.LoadFromFile('Test.xml');
cmd.Dialect := '{5d531cb2-e6ed-11d2-b252-00c04f681b71}';
cmd.CommandStream := strmIn;
// Execute the command, open the return stream, and read the result.
strmOut.Open;
cmd.Properties('Output Stream') := strmOut;
cmd.Properties('Output Encoding') := 'Windows-1251';
strmOut.Charset := 'Windows-1251';
strmOut.Type := 2;
cmd.Execute(,,1024);
strmOut.Position := 0;
strmOut.SaveToFile(c:\error.xml', 2);
cmd := NULL;
strmout := NULL;
strmin := NULL;
conn := NULL;
end;
Delphi: — SQLXMLBulkLoad с помощью схем
var
objBL: OleVariant;
begin
objBL := CreateOleObject('SQLXMLBulkLoad.SQLXMLBulkLoad.3.0');
objBL.ConnectionString := 'provider=SQLOLEDB.1;data source=localhost;database=database;uid=UserName;pwd=pwd';
objBL.ErrorLogFile := 'c:\error.log';
objBL.Execute('c:\SampleSchema.xml', 'c:\Test.xml');
objBL := NULL;
end;
О ТОМ ЧТОБЫ ЧЕРЕЗ ПАРСЕР "SAX" ИЛИ "DOM" ОТКРЫВАТЬ ФАЙЛ XML

И РЕЧИ НЕ МОЖЕТ ИДТИ, Т.К. В РЕЗУЛЬТАТЕ ДЛЯ ВСТАВКИ НУЖНО ФОРМИРОВАТЬ СКРИПТЫ "INSERT INTO", А НА ЭТО ЕЩЁ БОЛЬШЕ ВРЕМЕНИ УХОДИТ.... ДО СКОНЧАНИЯ ВЕКА МОЖНО ЖДАТЬ !!!

В общем кто сталкивался с проблемой оптимизации работы связки SQL и XML отзовитесь ...