文章目录
一、SQL Server导入Excel数据
接下来就一直点击NEXT,直到完成
此时EXCEL的数据就被导入进SQL Server了:
二、小技巧导入Excel数据
这个技巧就是直接使用复制粘贴的方式:
注意:这种方法只适用于添加少量数据,如果是几十万行的数据,是无法这样导入的。
如图,我们在Excel当中直接复制数据:
右键PTYPES表,选择编辑前2002行:
直接右键粘贴:
此时就直接可以导入数据了:
三、使用Microsoft.ACE.OLEDB导入Excel数据
首先安装包:
执行如下代码导入Excel表格中的数据:
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=D:\S072003DBS\食品销售数据\类别.XLSX',[类别$]);
如果发生报错,则参考如下代码:
-- 报错一:SQLServer阻止了对组件'AdHocDistributedQueries'的STATEMENT'OpenRowset/OpenDatasource'的访问,
-- 因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用。
-- sp_configure启用'AdHocDistributedQueries'。
-- 解决方法:
-- 启用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
-- 为了安全,使用完成后,关闭Ad Hoc Distributed Queries
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
-- 报错二:无法创建链接服务器“(null)”的 OLE DB 访问接口“Microsoft.ACE.OLEDB.12.0”的实例。
-- 解决方法:
--允许在进程中使用ACE.OLEDB.12
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
--允许动态参数
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
四、手动添加一行数据
INSERT INTO PTYPES (PTID,PTNAME) VALUES(101,'细粮')
五、手动添加多行数据
INSERT INTO PTYPES (PTID,PTNAME) VALUES
(102,'有机蔬菜'),(103,'有机粮食'),(104,'有机水果')
五、解决类型不匹配致导入失败
发现下面导入失败:
原因在于供应商和类别的类型定义的是INT
,但是在excel
当中他们是字符串类型,因此导入失败:
解决方法:
将两者忽略。相应的,在数据库当中要将两者设置为允许空值。
此时就导入成功了: