从 MS Access 数据生成 INSERT 语句的最简单方法
Posted
技术标签:
【中文标题】从 MS Access 数据生成 INSERT 语句的最简单方法【英文标题】:Easiest way to generate INSERT statements from MS Access data 【发布时间】:2010-09-03 21:35:52 【问题描述】:我在 MS Access 中有一堆数据。我想从数据中创建 INSERT 语句,目的是在 SQL Server 中运行它们。 Access 和 SQL Server 之间的表结构是相同的。我没有执行导出/导入的选项,因为我没有直接访问 SQL Server 的权限。它是一个网络主机的服务器,他们只给你一个愚蠢的控制面板来运行脚本。不幸的是,我无法针对它使用 SQL Server Management Studio 或任何其他工具。
从 MS Access 数据生成与 SQL Server 兼容的 INSERT 语句的最简单方法是什么?
【问题讨论】:
什么版本的 SQL Server?几张桌子?您是否有本地版本的 SQL Server 可以导入并从中生成脚本? (SSMS Tools 等插件可以从 SQL Server 生成这些语句) 我不知道有人愿意使用 VBA。 :-) 如果您需要对 Access 有广泛了解的人的帮助,明智的做法是不要对它发表刻薄的评论。 这是一个基于前提的“笑话”,可能会导致好心人质疑您的诚意。而且“我只是开玩笑”的借口很幼稚,无论如何,即使它是为了“开玩笑”。 【参考方案1】:在机器(您的开发机器、VM 等)上安装 SQL Server(可能是 Express)的副本。确保您的 .mdb 可以被这台机器读取。
使用 SQL Server 来create a Linked Server to your Access database。 从 Access 到本地 SQL Server 的 DTS/SSIS 表。 从本地 SQL Server 导出脚本 + 数据。右键单击您的数据库,选择任务-> 生成脚本。 选择脚本数据。这将确保您的创建语句后跟数据。
【讨论】:
那是完美的。我忘记了从 SQL Server 链接到 MS Access 数据库的能力。 好吧,除了我正在运行的 SQL 服务器是 64 位之外,它似乎可以工作,而且使用链接服务器从 64 位 SQL Server 连接到 32 位访问似乎存在问题.哦,好吧,我想我又开始玩 Excel 公式了。 @jkohlhepp:我自己也试过了!考虑使用 32 位 Windows 启动新 VM。它对其他场景也很有用。祝你好运! 如果您安装了 64 位 Jet/ACE,64 位 SQL Server 不能使用它吗?【参考方案2】:考虑混合使用 Access 和 Excel。
在数据表视图中查看您的 Access 表。 选择所有行 粘贴到 Excel 中 在 A 列之前插入一个新列。 在此单元格中构建您的INSERT
语句。
根据需要在每列(插入新列)和单引号之间插入逗号
插入结束括号
向下拖动 INSERT 语句、逗号和结束括号,为表中的每一行复制它们的值。
确保在执行该脚本之前设置SET IDENTITY_INSERT MyTable ON
。
【讨论】:
这是我开始采用的方法,但它变成了 PITA,因为数据中有令人讨厌的字符,如换行符、单引号等。摆脱所有垃圾的 Excel 公式正在成为很难管理。【参考方案3】:事实证明,我找到了一种比任何一个建议的答案都更容易的方法。我进入 SQL Server Management Studio 并右键单击数据库,选择导入,然后通过向导从 MS Access 数据源导入。这是相当轻松和简单的。然后我将脚本生成为 p。坎贝尔建议。
【讨论】:
所以你使用了 SSMS,即使在你的问题中,你说你不能? 如果你做了什么@p。坎贝尔建议,那你应该给他答案!他可能没有准确地了解每一个细节(你导入而不是 DTSed),但让他休息一下:他准确地指导了你。 我和@emtucifor 在一起。除了导入到 sql server 的方法之外,其他所有方法都在 @p.campbell 的回答中。 好的答案授予@p.campbell,因为我确实使用了其中的一部分。但是没有提到使用 SSMS Import 的部分。在我的问题中,我说我不能使用 SSMS 来与 production 数据库对话。但是将它用于我的开发数据库作为创建 INSERT 语句的垫脚石是可能的。但这可能在我不好的问题中并不清楚。以上是关于从 MS Access 数据生成 INSERT 语句的最简单方法的主要内容,如果未能解决你的问题,请参考以下文章
MS Access db.Execute " INSERT INTO
MS Access 使用 SQL INSERT INTO - SELECT FROM 插入记录