Sql server 如何使用VBA加速Access和SQL Server之间的表传输?
我试图以编程方式将表从access移动到SQL Server。 我在系统权限方面有一些限制,即:我不能使用OPENDATASOURCE或OPENROWSET 我想要实现的是将一些表从Access传输到SQL Server,然后通过vba(excel)/python和T-SQL处理这些表 问题在于移动工作台所需的时间。 我目前的程序是:Sql server 如何使用VBA加速Access和SQL Server之间的表传输?,sql-server,excel,vba,tsql,ms-access,Sql Server,Excel,Vba,Tsql,Ms Access,我试图以编程方式将表从access移动到SQL Server。 我在系统权限方面有一些限制,即:我不能使用OPENDATASOURCE或OPENROWSET 我想要实现的是将一些表从Access传输到SQL Server,然后通过vba(excel)/python和T-SQL处理这些表 问题在于移动工作台所需的时间。 我目前的程序是: 我使用vba宏,从excel导入数据,并在access中进行相同的转换,然后导入SQL Server 销毁服务器中的表:“删除表” 使用DoCmd.Transfe
实现这一目标的更快方法是什么?为什么像OPENDATASOURCE或OPENROWSET这样的函数会被阻止?你在银行工作吗
我不能肯定哪种解决方案是最快的,但是你可能想考虑将所有的访问表导出为单独的CSV文件(或者Excel文件),然后运行一个小脚本将每个文件加载到SQLServer中。 下面是一些VBA代码,它将单独的表保存为单独的文件
Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentData
For Each obj In dbs.AllTables
If Left(obj.Name, 4) <> "MSys" Then
DoCmd.TransferText acExportDelim, , obj.Name, obj.Name & ".csv", True
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, obj.Name, obj.Name & ".xls", True
End If
Next obj
也可以考虑这些选项中的一个。
每次10行用于将数据从Sql Server提取到Access中,而不是插入。的可能重复(问题是关于Oracle的,答案是针对Sql Server的。)--另请参见为什么使用Access表?无论您对access表做什么,都可以使用链接到access的第二个SQL表来完成,前提是不可能只使用一个表来完成所需的操作。您好,因为我无法将excel文件导入SQL Server,因为OPENDATASOURCE或OPENROWSET等函数被阻止。那么对于相同的简单操作,访问速度奇快。
Create TestTable
USE TestData
GO
CREATE TABLE CSVTest
(ID INT,
FirstName VARCHAR(40),
LastName VARCHAR(40),
BirthDate SMALLDATETIME)
GO
BULK
INSERT CSVTest
FROM 'c:\csvtest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
--Check the content of the table.
SELECT *
FROM CSVTest
GO
--Drop the table to clean up database.
DROP TABLE CSVTest
GO