2

我刚刚在本地测试了一个 TSQL 脚本,它将 XML 文件中的数据导入到我的 SQL 表中。我只是有一个“糟糕”的时刻,因为我不确定将我的 XML 文件放在哪里,以便我可以将这些数据放入我的 SQL Azure DB。我做了一些谷歌搜索,但找不到如何做到这一点。

有没有办法可以针对我的 Azure DB 运行此 SQL 并让它加载我的 XML 文件的内容?

注意:请注意下面的这一行:

批量'c:\Temp\abook.20130407.1912.xml',

它在我的本地电脑上。我不确定将这个文件放在哪里,以便我可以将这些数据传输到 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
4

1 回答 1

1

在研究了一些看似痛苦的方法后,我找到了一种相当快速和干净的方法。

由于我能够将 XML 文件导入本地数据库,因此我只生成了可用于在我的 SQL Azure 实例上执行的脚本。

本地数据库:

  1. 导入上面问题中所示的 XML 文件
  2. 右键单击 DB -> 任务 -> 生成脚本
  3. 完成向导,指定我要编写脚本的表
  4. 在“设置脚本选项”选项卡上,单击“高级”按钮并设置选项,如下所示。
  5. 完成向导

在 SSMS 中,连接到 SQL Azure:
1. 使用上述步骤中的输出/脚本导入数据

链接显示了一些用于生成脚本的高级选项的设置。

在高级脚本选项
中,将“数据库引擎类型脚本”选项设置为“SQL Azure 数据库”<br>将“将 UDDT 转换为基本类型”选项设置为“True”<br>并将“数据类型脚本”选项设置为“仅数据”<br> 单击“确定”。

于 2013-04-08T02:30:18.930 回答