将多个查询导出到不同的表
Posted
技术标签:
【中文标题】将多个查询导出到不同的表【英文标题】:Export multiple queries to different tables 【发布时间】:2009-11-25 10:11:20 【问题描述】:我需要导出;从 ms sql 对 ms 访问数据库的不同表的多个查询。
我知道可以通过获取每个查询并将其导出到单个表并针对不同的查询重复相同的查询。
我想知道的是……可以一口气完成吗?
假设有三个查询,每个查询输出需要在不同的表中......在这种情况下,是否可以使用单个导出?
【问题讨论】:
【参考方案1】:您可以将单个导出保存为 SSIS 包,然后将它们合并到一个包中。
导出甚至可以并行运行。
【讨论】:
【参考方案2】:我不确定你的意思。您可以将所有 SQL 语句放入一个命令批处理中,而不是单独执行每个命令,例如:
insert into Table1 select ...
insert into Table2 select ...
insert into Table3 select ...
【讨论】:
假设有三个查询并且每个查询输出需要在不同的表中......在这种情况下是否可以使用单个导出? 这个问题是从哪里运行的,但 Access/Jet/ACE 不能批量运行多个 SQL 语句——它一次只能运行一个。鉴于 Access/Jet/ACE 的性质,即没有用于序列化更新的服务器端进程,您不能这样做是有道理的(或者,至少,您不能安全可靠地进行操作,并且不要害怕破坏您的数据)。 嗯。每次我查看 Access 时,我都会发现它不能做的另一件事。谢谢大卫。 :-) @David W. Fenton:“批量运行多个 SQL 语句......你不能这样做(或者,至少,你不能安全可靠地做到这一点,不要害怕损坏您的数据)。” -- 好吧,您可以使用带有批处理乐观锁定的 ADO 记录集,将行添加到记录集中,然后调用 UpdateBatch 方法。【参考方案3】:这些是直通查询还是 Jet (Access) 查询?如果它们是 Jet 查询,您应该创建生成表查询并通过 VBA 将它们作为批处理运行。如果您愿意,可以在 VBA 中轻松构建生成表查询本身。这是一个从链接的 SQL Server 表中获取连接字符串的示例,但是您可以填写自己的连接字符串,它应该与链接表的连接属性具有相同的格式。
Dim db As Database
Dim strSQL As String
Dim strConnect As String
Set db = CurrentDb
strConnect = db.TableDefs("dbo_test").Connect
strSQL = "INSERT INTO NewAccessTable (ID, Descr) " _
& "SELECT ID, Descr FROM [" & strConnect & "].[test] "
db.Execute strSQL, dbFailOnError
Debug.Print db.RecordsAffected
【讨论】:
以上是关于将多个查询导出到不同的表的主要内容,如果未能解决你的问题,请参考以下文章
使用 SSIS 脚本任务将数据从多个 SQL 表导出到不同的平面文件
Oracle dmp文件导入(还原)到不同的表空间和不同的用户下