2013-04-08 72 views
2

我剛剛在本地測試了一個TSQL腳本,它將XML文件中的數據導入到我的SQL表中。我只是有一個「哦,廢話」的時刻,因爲我不知道該把XML文件放在哪裏,以便我可以將這些數據存入我的SQL Azure數據庫。我做了一些谷歌搜索,但無法找到如何做到這一點。將XML文件加載到SQL Azure

有沒有一種方法可以對我的Azure數據庫運行這個SQL,並讓它載入我的XML文件的內容?

注:請注意下面這行:

BULK 'C:\ TEMP \ abook.20130407.1912.xml',

這是我的本地PC上。我不確定放置該文件的位置,因此我可以將這些數據提供給Azure。

SET IDENTITY_INSERT Contact ON 

INSERT INTO Contact (ContactId, EntityId, Type, Value, Notes) 
SELECT X.row.query('field[@name="id"]').value('.', 'INT'), 
     X.row.query('field[@name="recordid"]').value('.', 'INT'), 
     X.row.query('field[@name="type"]').value('.', 'VARCHAR(25)'), 
     X.row.query('field[@name="contact"]').value('.', 'VARCHAR(100)'), 
     X.row.query('field[@name="notes"]').value('.', 'NVARCHAR(255)') 
FROM ( 
SELECT CAST(x AS XML) 
FROM OPENROWSET(
    BULK 'c:\Temp\abook.20130407.1912.xml', 
    SINGLE_BLOB) AS T(x) 
    ) AS T(x) 
CROSS APPLY x.nodes('/mysqldump/database/table_data[@name="contact"]/row') AS X(row); 

SET IDENTITY_INSERT Contact OFF 

回答

1

在研究了一些看起來很痛苦的方法之後,我發現了一個相當快速和乾淨的方法。

因爲我能夠將XML文件導入到本地數據庫中,所以我只生成了可用於在我的SQL Azure實例上執行的腳本。

本地數據庫:

  1. 導入像顯示在上面的問題
  2. 右鍵單擊數據庫的XML文件 - >任務 - >生成腳本
  3. 按照嚮導,指定各表想要腳本
  4. 在「設置腳本選項」選項卡上,單擊「高級」按鈕並設置如下所示的選項。
  5. 完成嚮導

在SSMS,連接到SQL天青:
1.使用輸出/從上述步驟的腳本導入數據

link這表明一些設置要使用的生成腳本的高級選項。

在高級腳本選項
設置「腳本的數據庫引擎類型」選項爲「SQL Azure數據庫」
集「轉換尿分流旱廁到基本類型」選項爲「真」
和設置「類型數據腳本「選項設置爲」僅數據「
單擊確定。

+0

嗨,鮑勃。我知道一段時間過去了,但你能告訴我「上面的問題」在哪裏嗎?在如何導入XML文件? – Vic 2014-06-24 09:12:07

+0

這是這個頁面上的問題。 – 2014-06-24 11:47:32