sql server解析xml文件并生成多个表

直接进入正题。

首先定义变量

DECLARE @x xml

(这样会保存至默认的数据库,如果有需要的话要在开头使用自己的数据库)如下:

use XMLTest
接下来给x赋值就行了,使用set:
SET @x = ''

引号里面写要用到的xml内容

插入部分使用select into:

DECLARE @out INT
EXEC sp_xml_preparedocument @out OUTPUT,@x
SELECT *
INTO book
FROM OPENXML(@out,'//book',2)
WITH(
	year INT '@year',
	title VARCHAR(50) 'title',
	publisher VARCHAR(50) 'publisher',
	price VARCHAR(50) 'price'
)

这样book节点下的属性year和三个子元素就存入book表了(book表会自动创建)

表格创建后可以通过alter插入约束

alter table book alter column title VARCHAR(50) not null
alter table book add constraint PK_title primary key(title)

值得一提的是关于title设置为非空我只想到了这种方法(不知道在建表时候怎么设置),有其他方式欢迎探讨

之后就可以为其他表添加外键了(对于title)

alter table author add constraint FK_author foreign key(title)  references book(title)

这里为author表添加外键约束,依赖于book表的title

自己折腾的一些过程,欢迎大家作为参考,避免过程中的一些坑

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值