将ACCESS数据批量导入SQL SERVER

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
IF OBJECT_ID( 'Sp_InputAccesstoSQL' IS  NOT  NULL
     DROP  PROC Sp_InputAccesstoSQL
GO
CREATE  PROC Sp_InputAccesstoSQL
@dir NVARCHAR(100), --ACCESS文件存放路径:如D:\Files
@tabname NVARCHAR(50)  --定义导入到数据库中的表名,如果存在就不需要创建
AS
SET  NOCOUNT  ON
DECLARE  @cmd NVARCHAR(1000)
CREATE  TABLE  #t([filename] NVARCHAR(1000))
IF  RIGHT (@dir,1)<> '\' 
     SET @dir=@dir+' \ '
SET @cmd = N' dir  "' + @dir + '*.mdb"  /B '
INSERT #t EXEC master..xp_cmdshell @cmd
DELETE #t WHERE [filename] IS NULL
--在SQL中创建表:
DECLARE @S nvarchar(MAX)
IF OBJECT_ID(@tabname) IS NULL
BEGIN
     SELECT TOP 1 @S=' SELECT  TOP  0 *  INTO  '+ @tabname+'  FROM  OPENROWSET(
             '' Microsoft.ACE.OLEDB.12.0 '' '' '+@DIR+[filename]+' '' ; '' Admin '' ; '' '' , '+@tabname+' ) '
     FROM #t  
     EXEC(@S)
END
--开始导入目录下的文件
SET @S = ' '
SELECT @S = @S + ' INSERT  '+@tabname+'  SELECT  FROM  OPENROWSET(
     '' Microsoft.ACE.OLEDB.12.0 '' '' '+@DIR+[filename]+' '' ; '' Admin '' ; '' '' , '+@tabname+' ) '  
FROM #t      
EXEC(@S)
SET NOCOUNT OFF
GO
--调用:
 
EXEC Sp_InputAccesstoSQL ' F:\test ',' table_name'


注意:根据系统安装access版本的不同,Microsoft.ACE.OLEDB.12.0可能替换为这个Microsoft.Jet.OLEDB.4.0 。


FAQ:

Q1: SQL Server 阻止了对组件 'xp_cmdshell' 的 过程 'sys.xp_cmdshell' 的访问...

A1: 执行以下sql语句:

1
2
3
4
5
6
sp_configure  'show advanced options' ,1
reconfigure
go
sp_configure  'xp_cmdshell' ,1
reconfigure
go

Q2: SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的访问...

A2: 执行以下sql语句:

1
2
3
EXEC  sp_configure 'Ad Hoc Distributed Queries' ,1;
RECONFIGURE;
GO


参考:


PS、此方法对上百兆的access文件速度特别慢,请慎重考虑。


*** walker ***

本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1430990如需转载请自行联系原作者

RQSLT
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
25天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
65 11
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
2月前
|
SQL 存储 缓存
SQL Server 数据太多如何优化
11种优化方案供你参考,优化 SQL Server 数据库性能得从多个方面着手,包括硬件配置、数据库结构、查询优化、索引管理、分区分表、并行处理等。通过合理的索引、查询优化、数据分区等技术,可以在数据量增大时保持较好的性能。同时,定期进行数据库维护和清理,保证数据库高效运行。
|
3月前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
3月前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
3月前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
3月前
|
SQL 监控 数据处理
SQL数据库数据修改操作详解
数据库是现代信息系统的重要组成部分,其中SQL(StructuredQueryLanguage)是管理和处理数据库的重要工具之一。在日常的业务运营过程中,数据的准确性和及时性对企业来说至关重要,这就需要掌握如何在数据库中正确地进行数据修改操作。本文将详细介绍在SQL数据库中如何修改数据,帮助读者更好
636 4
|
3月前
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
462 1
|
4月前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
120 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
4天前
|
数据库 Windows
SqlServer数据恢复—SqlServer数据库所在分区损坏的数据恢复案例
一块硬盘上存放的SqlServer数据库,windows server操作系统+NTFS文件系统。由于误操作导致分区损坏,需要恢复硬盘里的SqlServer数据库数据。