使用ColdFusion将Access数据导入SQL Server

时间:2020-03-05 18:54:18  来源:igfitidea点击:

这应该很简单。我正在尝试将数据从Access导入SQL Server。我没有直接访问GoDaddy上的SQL Server数据库的权限,并且它们仅允许Web访问。因此,我无法使用需要远程访问数据库的Management Studio工具或者其他第三方Access大型化程序。

我在Access数据库上写了一个查询,试图遍历并将每个记录插入相应的SQL Server表中。但是它总是出错。我相当确定这是因为HTML,上帝知道Access文本字段之一中还有其他奇怪的字符。我尝试使用CFQUERYPARAM,但这似乎也无济于事。

任何想法都会有所帮助。谢谢。

解决方案

回答

当可以使用SQL Update时,建议不要遍历记录。

从问题尚不清楚,我们使用的是哪个数据库接口层,但是如果使用的接口同时支持两种类型的数据库,则可以通过正确的接口从数据库外部的源插入数据。可以在SQL语句的FROM子句中完成此操作,不仅可以指定表名,还可以指定数据库的连接字符串。假设Web主机具有用于Jet数据的ODBC驱动程序(我们实际上并未使用Access,这是应用程序开发的一部分-我们仅使用Jet数据库引擎),那么连接字符串就足够了。

编辑:如果我们使用Jet数据库引擎来执行此操作,我们应该能够指定这样的源表(其中tblSQLServer是Jet MDB中的表,该表通过ODBC链接到SQL Server):

INSERT INTO tblSQLServer (ID, OtherField ) 
SELECT ID, OtherField
FROM [c:\MyDBs\Access.mdb].tblSQLServer

关键是我们正在利用Jet db引擎为我们完成所有繁重的工作。

回答

尝试使用GoDaddy SQL备份/还原工具来获取数据库的本地副本。此时,请使用SQL Server DTS工具导入数据。这是一个易于使用的拖放式图形界面。

回答

抛出什么错误?我们使用的是什么奇数字符?我们是指HTML标记还是扩展(例如UTF-8)字符?

如果可能,请打开"健壮错误报告"。

如果问题是页面超时,则可以使用Admin,使用cfsetting标记来增加超时,或者重写脚本以运行一定数量的行,然后在下一个起点转发给自身。

回答

我们应该能够从应用程序服务器的命令行在MS SQL Server中执行保存的DTS包。既然是这种情况,则可以使用<cfexecute>来向DTSRUNNUI.EXE发出请求。 (请参见示例)这当然是假设我们在可使用该命令的服务器上。