Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Импорт данных из файла с множеством XML документов  [new]
BorodaSoft
Member

Откуда: Ростов-на-Дону
Сообщений: 35
Добрый день,

Подскажите, возможна ли подобная реализация:
Есть файл содержащий в себе множество XML документов. Пример ниже.
При этом, в XML документах может отличаться кол-во элементов.
Так же, некоторые документы могут быть пустыми:
<?xml version = '1.0'?>
<ROWSET/>

Нужно загрузить данные из всех XML документов в одну таблицу (SQL 2005) без использования дополнительного парсинга начала/конца XML документа.

Т.е. хотелось бы использовать что-то типа шаблона схем, что бы SQL Server, понял что перед ним набор/коллекция XML документов.


<?xml version = '1.0'?>                                                         
<ROWSET>                                                                        
   <ROW num="1">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2009 11:32:7</WHENRUN>                                      
      <FACTNAME>Parameters</FACTNAME>                                           
      <VALUE1>11-jan-2009</VALUE1>                                              
      <VALUE2>22-jun-2009</VALUE2>                                              
   </ROW>                                                                       
</ROWSET>                                                                       
                                                                                
                                                                                

<?xml version = '1.0'?>           
<ROWSET/>                         
                                  
                                                                                

<?xml version = '1.0'?>                                                         
<ROWSET>                                                                        
   <ROW num="1">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2007 11:32:9</WHENRUN>                                      
      <FACTNAME>System</FACTNAME>                                  
      <VALUE2>APPROVER</VALUE2>                                     
   </ROW>                                                                       
   <ROW num="2">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2007 11:32:9</WHENRUN>                                      
      <FACTNAME>System</FACTNAME>                                  
      <VALUE2>ANONYMOUS</VALUE2>                                                
      <VALUE3>1/1/1950 0:0:0</VALUE3>                                           
   </ROW>                                                                       
   <ROW num="3">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2007 11:32:9</WHENRUN>                                      
      <FACTNAME>System</FACTNAME>                                  
      <VALUE2>MGR</VALUE2>                                                  
   </ROW>                                                                       
   <ROW num="4">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2007 11:32:9</WHENRUN>                                      
      <FACTNAME>System</FACTNAME>                                  
      <VALUE2>ADM</VALUE2>                                                   
      <VALUE3>2/28/2002 0:0:0</VALUE3>                                          
   </ROW>                                                                       
   <ROW num="5">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2007 11:32:9</WHENRUN>                                      
      <FACTNAME>System</FACTNAME>                                  
      <VALUE2>INSTALL</VALUE2>                                              
      <VALUE3>8/10/1995 0:0:0</VALUE3>                                          
   </ROW>                                                                       
   <ROW num="6">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2007 11:32:9</WHENRUN>                                      
      <FACTNAME>System</FACTNAME>                                  
      <VALUE2>GUEST</VALUE2>                                                    
      <VALUE3>6/11/2009 12:21:56</VALUE3>                                       
   </ROW>                                                                       
   <ROW num="7">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2007 11:32:9</WHENRUN>                                      
      <FACTNAME>System</FACTNAME>                                  
      <VALUE2>EGUEST</VALUE2>                                                 
      <VALUE3>6/30/2004 0:0:0</VALUE3>                                          
   </ROW>                                                                       
   <ROW num="8">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2007 11:32:9</WHENRUN>                                      
      <FACTNAME>System</FACTNAME>                                  
      <VALUE2>ADMIN</VALUE2>                                                
      <VALUE3>9/20/2004 0:0:0</VALUE3>                                          
   </ROW> 
</ROWSET>           



<?xml version = '1.0'?>                                                         
<ROWSET>                                                                        
   <ROW num="1">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2008 11:37:32</WHENRUN>                                     
      <FACTNAME>Forms</FACTNAME>                      
      <FUNCTION_NAME>POLICIES_WEB</FUNCTION_NAME>                  
      <WEB_HTML_CALL>policies.html</WEB_HTML_CALL>                                       
   </ROW>                                                                       
   <ROW num="2">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2008 11:37:32</WHENRUN>                                     
      <FACTNAME>Forms</FACTNAME>                      
      <USER_FUNCTION_NAME>BSC</USER_FUNCTION_NAME>                   
      <FUNCTION_NAME>SP</FUNCTION_NAME>                          
      <WEB_HTML_CALL>support.html</WEB_HTML_CALL>                           
   </ROW>                                                                       
   <ROW num="3">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2008 11:37:32</WHENRUN>                                     
      <FACTNAME>Forms</FACTNAME>                      
      <USER_FUNCTION_NAME>ISO</USER_FUNCTION_NAME>                 
      <FUNCTION_NAME>BS</FUNCTION_NAME>                          
      <WEB_HTML_CALL>mp.html</WEB_HTML_CALL>                                                                
   </ROW>                                                                       
   <ROW num="4">                                                                
      <CUSTOMER_NAME>cust1</CUSTOMER_NAME>                                    
      <WHENRUN>6/26/2008 11:37:32</WHENRUN>                                     
      <FACTNAME>Forms</FACTNAME>                      
      <USER_FUNCTION_NAME>AT HELP</USER_FUNCTION_NAME>                     
      <FUNCTION_NAME>HELP</FUNCTION_NAME>                               
      <WEB_HTML_CALL>call.html</WEB_HTML_CALL>                      
   </ROW>                                                                       
</ROWSET>                         


Таблица:
CREATE TABLE TableX(
ROW_num int,
CUSTOMER_NAME varchar(100),
WHENRUN datetime,
FACTNAME varchar(200),                                         
VALUE1 varchar(200),                                         
VALUE2 varchar(200),                                         
VALUE3 datetime,
USER_FUNCTION_NAME nvarchar(255),
FUNCTION_NAME nvarchar(255),                         
WEB_HTML_CALL nvarchar(max)                          
)
30 июн 09, 13:07    [7358628]     Ответить | Цитировать Сообщить модератору
 Re: Скалрная функция, увеличение быстродействия  [new]
Ыукупф
Member

Откуда:
Сообщений: 36
BorodaSoft,
1 июл 09, 00:09    [7361381]     Ответить | Цитировать Сообщить модератору
 Re: Скалрная функция, увеличение быстродействия  [new]
Ыукупф
Member

Откуда:
Сообщений: 36
Эм, случайно отправилось..

как вариант - убрать <?xml ... ?> и с получившимся xml уже норм работать
1 июл 09, 00:10    [7361384]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить