Excel 批量导入 SQL Server 2005

linxy2002 2009-03-18 04:57:17
以前问过的帖子:http://topic.csdn.net/u/20090218/14/fa4cda82-8e7b-4838-9053-3f427bea9e94.html

数据库中有两个表
A
姓名 年龄 性别 成绩序号
张三 24 男 1011


B
成绩序号 圈次 成绩
1011 1 14.2
1011 2 11.5
1011 3 14.6
1011 4 15.3
1011 5 16.7


我的excel 文件记录形式:
姓名 年龄 性别 第一圈 第二圈 第三圈 第四圈 第五圈
张三 24 男 14.2 11.5 14.6 15.3 16.7
李四 24 男 14.2 11.5 14.6 15.3 16.7
王五 24 男 14.2 11.5 14.6 15.3 16.7
张二 24 男 14.2 11.5 14.6 15.3 16.7
张三 24 男 14.2 11.5 14.6 15.3 16.7
excel 文件记录可以修改,怎么方便处理怎么定,比如可以是:
姓名 年龄 性别 成绩
张三 24 男 14.2,11.5,14.6,15.3,16.7
李四 24 男 14.2,11.5,14.6,15.3,16.7

要求:
将excel 记录批量导入到数据库的两张表中,

我现在可以得到excel 中的记录,但怎么将这些记录写到两张表里?其中"成绩序号"是数据库自增的。
我只知道写入一张表是这样:
insert into A (姓名,年龄,性别)
select 姓名,年龄,性别 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;HDR=YES;DATABASE=c:\2008.xls' --c:\test.xls是excel文件名
,'select * from [sheet1$]')


谢谢大家
...全文
295 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
AwillAway 2010-01-26
  • 打赏
  • 举报
回复
mark
yibey84 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dawugui 的回复:]
先导入一个临时表,然后按照需求分解成你的两个表.
然后通过行列转换把数据生成你那两个表的格式.
[/Quote]
已阅
qizhengsheng 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dawugui 的回复:]
先导入一个临时表,然后按照需求分解成你的两个表.
然后通过行列转换把数据生成你那两个表的格式.
[/Quote]
mark
linxy2002 2009-03-19
  • 打赏
  • 举报
回复
to being21

你这个是插入到一个表,可我这是两个表,而且圈次是不固定的有可能5圈,7圈,10圈





谢谢大家帮忙
syf016406 2009-03-18
  • 打赏
  • 举报
回复
学习中
being21 2009-03-18
  • 打赏
  • 举报
回复
我的理解是 大佬的 意思是说



insert into A (姓名,年龄,性别)
select 姓名,年龄,性别 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;HDR=YES;DATABASE=c:\2008.xls' --c:\test.xls是excel文件名
,'select * from [sheet1$]')
修改成
------------------------------------------------
select 姓名,年龄,性别 ,第一圈,第二圈,第三圈,第四圈,第五圈
into #table
from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;HDR=YES;DATABASE=c:\2008.xls' --c:\test.xls是excel文件名
,'select * from [sheet1$]')

insert into A (姓名,年龄,性别, 成绩)
select 姓名,年龄,性别,(第一圈 +','+第二圈+','+第三圈+','+ 第四圈 +','+第五圈) as 成绩 from #table


linxy2002 2009-03-18
  • 打赏
  • 举报
回复
"成绩序号"是数据库自增的。

插一条记录的时候是先向A 表插入姓名,年龄
然后数据库自动产生一个成绩序号
然后在向B表插入成绩序号,圈次,成绩


临时表如何处理呢?请高手给详细点啊,有没有连接?



谢谢
-狙击手- 2009-03-18
  • 打赏
  • 举报
回复
看右了
jinjazz 2009-03-18
  • 打赏
  • 举报
回复
用临时表处理比较好
dawugui 2009-03-18
  • 打赏
  • 举报
回复
先导入一个临时表,然后按照需求分解成你的两个表.
然后通过行列转换把数据生成你那两个表的格式.
-狙击手- 2009-03-18
  • 打赏
  • 举报
回复
select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;HDR=YES;DATABASE=d:\bb.xls' --c:\test.xls是excel文件名
,'select * from [sheet1$]') a,
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;HDR=YES;DATABASE=d:\bb1.xls' --另外的excel文件名
,'select * from [sheet1$]') b
where .....
dawugui 2009-03-18
  • 打赏
  • 举报
回复
就你给出的数据还少个内容:成绩序号.在哪里?
dawugui 2009-03-18
  • 打赏
  • 举报
回复
先导入一个临时表,然后按照需求分解成你的两个表.

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧