2013-04-08 57 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