【问题标题】:Trying to insert into new table but seeing "Could not find output table"尝试插入新表但看到“找不到输出表”
【发布时间】:2020-02-18 23:42:56
【问题描述】:

我有一个 SQL Server 后端和一个 Access 前端。 SQL 表每天更新一次,但是每周一次(或每当我运行此查询时)我需要将所有更改导出到新表(上传)中,其中数据与我拥有的静态表不匹配。所以基本上我试图从静态表(重复数据删除)中删除活动表(MSTR-SENT)。

当我运行此查询(针对 Access 中的着墨表的数据定义)时,我收到错误“找不到输出表‘上传’”。这是正确的,因为它不存在,我只想创建一个包含重复数据删除内容的新表(上传)。

INSERT INTO [upload]
  (company, [new-ind], [address], [state], city, zip, stext)
SELECT de.company,
       de.[new-ind],
       de.[address],
       de.[state],
       de.[city],
       de.[zip],
       de.stext
  FROM [MSTR-SENT] de
 WHERE NOT EXISTS(SELECT website, company, zip
                    FROM dedupe d2
                   WHERE d2.website = de.website OR d2.company = de.company OR d2.zip = de.zip)

这将如何工作,以便插入新表并且不会引发此错误?

【问题讨论】:

  • 您需要创建表“上传”或使用选择进入。但是如果你使用 select into 它只会工作一次,因为那样表就会存在。
  • 调试是程序员工作的一部分。错误信息非常清楚。你有没有检查你是否有表upload
  • @Eric 我是一名系统管理员,偶尔也会使用数据库。我知道我缺少一些简单的东西,而这个线程表明了这一点!我很感激!

标签: sql sql-server database ms-access


【解决方案1】:

INSERT INTO ... 语句必须引用存在的表。如果要创建表,请使用INSERT...SELECT...INTO... 语句:

SELECT de.company,
       de.[new-ind],
       de.[address],
       de.[state],
       de.[city],
       de.[zip],
       de.stext
  INTO dbo.upload
  FROM [MSTR-SENT] de
 WHERE NOT EXISTS(SELECT website, company, zip
                    FROM dedupe d2
                   WHERE d2.website = de.website OR d2.company = de.company OR d2.zip = de.zip)

当然,正如您应该所料,如果表upload 存在,上述操作将失败。但如果是这种情况,并且桌子将有效地处于“边缘”(有时在那里,有时不是),那么您似乎有一个更根本的设计缺陷,并且您显示停止丢弃桌子,并使用存在 @ 987654325@你有。

如果很简单,因为您希望表格首先“空”,然后TRUNCATE 表格upload 首先。

【讨论】:

  • 谢谢!我知道这很简单。基本上,发布到“上传”表中的信息然后..上传到另一个平台,然后删除该表。下次运行查询时,“重复数据删除”表会将这些结果插入其中,因此下一次“上传”仍然只是新结果。不过,我也可以像你说的那样截断,谢谢!
猜你喜欢
  • 2018-10-03
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
相关资源
最近更新 更多