有個4GB大的xml資料檔案,里面有多個欄位,如何把它保存到資料庫里。各欄位各成一列呢?求助
uj5u.com熱心網友回復:
先參考這個試試Examples of Bulk Import and Export of XML Documents (SQL Server)
如果進一步需要幫助,最好能把xml檔案的資料格式貼出來
uj5u.com熱心網友回復:

<?xml version="1.0" encoding="utf-8" ?>
- <!-- Prosper Data Export - Data - Version: 1.0 - Generated: 2012-02-14T03:42:14 -->
- <!-- Subject to the Prosper API Services Terms of Use Agreement located at http://www.prosper.com/tools/APITermsOfUse.aspx -->
- <ProsperDataExport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ProsperDataExport.xsd">
- <Bids>
- <Bid>
<Amount>50.00</Amount>
<CreationDate>2006-02-21T20:23:20</CreationDate>
<Key>0F12336634427919902FE93</Key>
<ListingKey>D6473365888221963456102</ListingKey>
<ListingStatus>Completed</ListingStatus>
<MemberKey>F4273365023760472DBD934</MemberKey>
<MinimumRate>0.25000</MinimumRate>
<MinimumYield>0.24500</MinimumYield>
<ParticipationAmount>0.00</ParticipationAmount>
<Status>Outbid</Status>
<ModifiedDate>2006-02-21T20:23:20</ModifiedDate>
</Bid>
- <Bid>
<Amount>50.00</Amount>
<CreationDate>2006-02-21T22:50:00</CreationDate>
<Key>87F333655285187004B2EE8</Key>
<ListingKey>D6473365888221963456102</ListingKey>
<ListingStatus>Completed</ListingStatus>
<MemberKey>F4273365023760472DBD934</MemberKey>
<MinimumRate />
<MinimumYield />
<ParticipationAmount>50.00</ParticipationAmount>
<Status>Winning</Status>
<ModifiedDate>2006-02-21T22:50:00</ModifiedDate>
</Bid>
這是.xml檔案中其中的2條資料,怎么弄呢?
uj5u.com熱心網友回復:
DECLARE @x xml = '<?xml version="1.0" encoding="utf-8"?>
<!-- Prosper Data Export - Data - Version: 1.0 - Generated: 2012-02-14T03:42:14 -->
<!-- Subject to the Prosper API Services Terms of Use Agreement located at http://www.prosper.com/tools/APITermsOfUse.aspx -->
<ProsperDataExport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ProsperDataExport.xsd">
<Bids>
<Bid>
<Amount>50.00</Amount>
<CreationDate>2006-02-21T20:23:20</CreationDate>
<Key>0F12336634427919902FE93</Key>
<ListingKey>D6473365888221963456102</ListingKey>
<ListingStatus>Completed</ListingStatus>
<MemberKey>F4273365023760472DBD934</MemberKey>
<MinimumRate>0.25000</MinimumRate>
<MinimumYield>0.24500</MinimumYield>
<ParticipationAmount>0.00</ParticipationAmount>
<Status>Outbid</Status>
<ModifiedDate>2006-02-21T20:23:20</ModifiedDate>
</Bid>
<Bid>
<Amount>50.00</Amount>
<CreationDate>2006-02-21T22:50:00</CreationDate>
<Key>87F333655285187004B2EE8</Key>
<ListingKey>D6473365888221963456102</ListingKey>
<ListingStatus>Completed</ListingStatus>
<MemberKey>F4273365023760472DBD934</MemberKey>
<MinimumRate/>
<MinimumYield/>
<ParticipationAmount>50.00</ParticipationAmount>
<Status>Winning</Status>
<ModifiedDate>2006-02-21T22:50:00</ModifiedDate>
</Bid>
</Bids>
</ProsperDataExport>
'
SELECT t.c.value('(Amount/text())[1]','decimal(18,2)')
,t.c.value('(CreationDate/text())[1]','datetime')
,t.c.value('(Key/text())[1]','varchar(50)')
,t.c.value('(ListingKey/text())[1]','varchar(50)')
,t.c.value('(ListingStatus/text())[1]','varchar(50)')
,t.c.value('(MemberKey/text())[1]','varchar(50)')
,t.c.value('(MinimumRate/text())[1]','decimal(18,5)')
,t.c.value('(MinimumYield/text())[1]','decimal(18,5)')
,t.c.value('(ParticipationAmount/text())[1]','decimal(18,2)')
,t.c.value('(Status/text())[1]','varchar(50)')
,t.c.value('(ModifiedDate/text())[1]','datetime')
FROM @x.nodes('ProsperDataExport/Bids/Bid')t(c)
/*
(無列名) (無列名) (無列名) (無列名) (無列名) (無列名) (無列名) (無列名) (無列名) (無列名) (無列名)
50.00 2006-02-21 20:23:20.000 0F12336634427919902FE93 D6473365888221963456102 Completed F4273365023760472DBD934 0.25000 0.24500 0.00 Outbid 2006-02-21 20:23:20.000
50.00 2006-02-21 22:50:00.000 87F333655285187004B2EE8 D6473365888221963456102 Completed F4273365023760472DBD934 NULL NULL 50.00 Winning 2006-02-21 22:50:00.000
*/
uj5u.com熱心網友回復:
把這么大的檔案匯入到sql資料庫 速度會很慢的,為什么一定要存在資料庫呢? 還有這個檔案為什么會有4G那么大。。。
uj5u.com熱心網友回復:
那我想要直接讀取4GB那么大.xml檔案,里面的資料直接復制黏貼在sql里再執行不現實啊。想要邊讀取.xml檔案的資料,邊插入資料庫的表里面,應該怎么做呢?
當然也可以插入excel表或者其他,存在哪里速度會快呢?
這是.xml資料鏈接: https://pan.baidu.com/s/1eSfwQFg 密碼: 5csf
在壓縮包里
uj5u.com熱心網友回復:
檔案大,是讀物理路徑不是COPY用以下方法賦值,試試
DECLARE @x XML
SELECT @x=CONVERT(xml, BulkColumn, 2) FROM
OPENROWSET(Bulk 'D:\路徑\XmlFile.xml', SINGLE_BLOB) [rowsetresults]
SELECT @x--
不能讀時直接用XML格式化匯入
uj5u.com熱心網友回復:
現在用mysql能夠匯入含有一張表的大的.xml檔案的資料,;另外還有一個.xml大的資料檔案,但這個xml里含有多個表,這就匯入不進資料庫去了,這改怎么辦呢?
uj5u.com熱心網友回復:
給你轉到MYSQL版,以上是SQL SERVER實作方法uj5u.com熱心網友回復:
請問,能再分享一下這個xml檔案嗎?
uj5u.com熱心網友回復:
版主,請問還有這個原始資料嗎?我做論文有用。謝謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/90929.html
標籤:MySQL
