access导入excel数据时,如何更新(覆盖)原有的记录?

lifeisshortyouneed 2013-12-03 04:52:14
有一个mdb 只有一张表,记录大概几千个。
另有一个excel表,列格式和数据库字段名相同,有记录大概一千个。
怎么样把excel中的这些数据导入到 mdb中,
要求:已有相同主键的记录,直接覆盖原记录。
没有的话,就是新增。

请教高手怎么搞 ,有没有简单的方法。

本人数据库小菜。
...全文
2435 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2013-12-04
  • 打赏
  • 举报
回复
呵呵,解决就好
lifeisshortyouneed 2013-12-04
  • 打赏
  • 举报
回复
引用 13 楼 wwwwb 的回复:
最简单的方法,将XLS另存为2003格式的XLS文件, 再用 select * from [excel 8.0;database=123.xls].[sheet1$] 试试 上传xls到www.access911.net/csdn
Select * FROM [EXCEL 8.0;DATABASE=c:\123.xls].[sheet1$]; 这样可以了。 还是路径的问题。全路径要加上。 我一开始就试过全路径,只不过路径搞错了~~ 哎都是低级错误。 anyway 谢谢你的帮忙~!
wwwwb 2013-12-04
  • 打赏
  • 举报
回复
最简单的方法,将XLS另存为2003格式的XLS文件, 再用 select * from [excel 8.0;database=123.xls].[sheet1$] 试试 上传xls到www.access911.net/csdn
lifeisshortyouneed 2013-12-04
  • 打赏
  • 举报
回复
引用 11 楼 wwwwb 的回复:
这样试试: Select * FROM [EXCEL 12.0 XML;DATABASE=E:\temp\text.xlsx].sheet1; 能否成功
这样试 报一样的错 还是找不到sheet1.
wwwwb 2013-12-04
  • 打赏
  • 举报
回复
这样试试: Select * FROM [EXCEL 12.0 XML;DATABASE=E:\temp\text.xlsx].sheet1; 能否成功
wwwwb 2013-12-04
  • 打赏
  • 举报
回复
你的代码是什么?
lifeisshortyouneed 2013-12-04
  • 打赏
  • 举报
回复
引用 8 楼 wwwwb 的回复:
是XLS还是xlsx文件,是否存在Sheet1?
我的是2010的,是xlsx, 有 sheet1. 语句里我也改成xlsx了。
wwwwb 2013-12-04
  • 打赏
  • 举报
回复
是XLS还是xlsx文件,是否存在Sheet1?
lifeisshortyouneed 2013-12-04
  • 打赏
  • 举报
回复
引用 6 楼 wwwwb 的回复:
你写的tt,a,b 分别是什么? TT示例表,A为TT的别名 B为XLS中的SHEET1别名
哦 这条语句基本懂了。 我execel是2010版本的 [excel 8.0;database=123.xls]是不是 改成 [excel 12.0;database=123.xlsx] 我试了一下有报错: Microsoft Access数据库引擎找不到对象“Sheet1$”。请确定该对象存在,并正确拼写其名称和路径名。" xls文件和mdb放同一个目录了 也试了前面加上全路径,也报一样的错 这是什么原因。
wwwwb 2013-12-04
  • 打赏
  • 举报
回复
你写的tt,a,b 分别是什么? TT示例表,A为TT的别名 B为XLS中的SHEET1别名
ACMAIN_CHM 2013-12-03
  • 打赏
  • 举报
回复
先删除,再插入,这个效率最高。
lifeisshortyouneed 2013-12-03
  • 打赏
  • 举报
回复
引用 3 楼 wwwwb 的回复:
还不如直接将表中数据删除,再重新插入记录 update tt a inner join [excel 8.0;database=123.xls].[sheet1$] b on a.id=b.id set a.f1=b.f1,...,a.fn=b.fn
哦~ 先删了 再插入也应该可以的。 如果只是有1,2个字段不一样,还是替换好吧。 你写的tt,a,b 分别是什么? 我SQL语句不太会 麻烦解释一下。谢谢了
wwwwb 2013-12-03
  • 打赏
  • 举报
回复
还不如直接将表中数据删除,再重新插入记录 update tt a inner join [excel 8.0;database=123.xls].[sheet1$] b on a.id=b.id set a.f1=b.f1,...,a.fn=b.fn
lifeisshortyouneed 2013-12-03
  • 打赏
  • 举报
回复
引用 1 楼 wwwwb 的回复:
2条SQL语句: 新增: 假如ID为主键 insert into tt select a.* from [excel 8.0;database=123.xls].[sheet1$] a left join tt on a.id=b.id where b.id is null 已有相同主键的记录,直接覆盖原记录。 详细说明 替换所有字段?直接插入不行?
有相同的是 替换所有字段。 因为可能有多个字段的数据都不同了,所以要所有字段都要替换掉。 直接插入是什么意思?
wwwwb 2013-12-03
  • 打赏
  • 举报
回复
2条SQL语句: 新增: 假如ID为主键 insert into tt select a.* from [excel 8.0;database=123.xls].[sheet1$] a left join tt on a.id=b.id where b.id is null 已有相同主键的记录,直接覆盖原记录。 详细说明 替换所有字段?直接插入不行?

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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