使用 ColdFusion 将 Access 数据导入 SQL Server

Posted

技术标签:

【中文标题】使用 ColdFusion 将 Access 数据导入 SQL Server【英文标题】:Importing Access data into SQL Server using ColdFusion 【发布时间】:2008-09-15 19:25:42 【问题描述】:

这应该很简单。我正在尝试将数据从 Access 导入 SQL Server。我没有直接访问 SQL Server 数据库的权限——它在 GoDaddy 上,他们只允许 Web 访问。所以我不能使用 Management Studio 工具或其他需要远程访问数据库的第三方 Access 升迁程序。

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

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

【问题讨论】:

列出错误是什么会很有帮助。如果我理解您正在尝试做什么,您正在连接到访问数据库以获取所有信息,然后循环通过该查询以插入 SQL Server? 除了错误消息之外,如果您可以在 Access 和 SQL Server 中列出表定义,将会有所帮助。 【参考方案1】:

尝试使用GoDaddy SQL backup/restore tool 获取数据库的本地副本。此时,使用SQL Server DTS tool 导入数据。这是一个易于使用的拖放式图形界面。

【讨论】:

我试过这个,但 GoDaddy 不允许从除他们自己的备份之外的任何内容进行恢复。我认为他们擅长做的事情不像已知世界中的其他网络主机那样做。【参考方案2】:

抛出了什么错误?你用的是什么奇怪的字符?您是指 HTML 标记,还是扩展(例如 UTF-8)字符?

如果可能,请打开强大的错误报告。

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

当可以使用 SQL 更新时,永远不建议循环遍历记录。

从您的问题中不清楚您使用的是哪个数据库接口层,但可以使用正确的接口从数据库外部的源插入数据如果所使用的接口支持这两种类型数据库。这可以在 SQL 语句的 FROM 子句中完成,方法是不仅指定表名,还指定数据库的连接字符串。假设您的网络主机有 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 引擎为您完成所有繁重的工作。

【讨论】:

以上是关于使用 ColdFusion 将 Access 数据导入 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

使用 Flex 时 SQL Server 需要很长时间才能将数据返回到 ColdFusion

防止 ColdFusion 使用 SerializeJSON 将字符串转换为数字

如何使用ColdFusion检查数据库的值?

Coldfusion 将数据循环到多列和多行

在 ColdFusion 中调用函数时如何仅指定一些可选参数?

ColdFusion错误将数据类型十进制转换为十进制