【问题标题】:Insert deleted records back into table将已删除的记录插入表中
【发布时间】:2017-10-26 14:10:34
【问题描述】:

我错误地删除了一些记录,但幸运的是我知道是哪些记录,因为它们在查询结果中被提及。我已将它们复制到excel文件中。如何一次将所有这些记录插入表中?

另外的问题可能是在删除时Result to Text选项被选中而不是Result to Grid

【问题讨论】:

  • 我已经使用这个工具解决了我的问题:tools.perceptus.ca/text-wiz.php?ops=7 由于所有其他答案都可能解决问题,我不会接受任何具体的答案,但感谢您的帮助。

标签: sql sql-server tsql


【解决方案1】:

我会创建一个公式,例如:

replace(replace(replace("([1], [2], [3]),", "[1]", A2), "[2]", B2), "[3]", B3)

复制此公式以获取列中的所有数据。注意:您可能需要为字符串和日期添加单引号。

然后进入 SSMS 并输入(填写姓名):

insert into <tablename>(<col1>, <col2>, . . .)
    values

然后复制公式的结果。去掉最后一个逗号,运行代码。

【讨论】:

  • 很抱歉,我不确定我是否得到了这个。你能帮我多一点吗?该表有 40 列,我总共删除了 283 条记录。建议的公式中的数字是否应该与表格中的列一样多?我应该把列的真实名称而不是A2B2B3等等?
  • 既然我有Text 格式的结果,我是否应该将该结果复制到记事本,然后尝试将insert 从文本文件中的表格中?
  • 请看这篇文章,我想对你有帮助-stackoverflow.com/questions/16818796/…
  • @Sandy 谢谢,我会考虑的
【解决方案2】:

嗯,这完全是一个技巧,但可能值得一试。如果它有效,它会非常快。如果没有,您将不会浪费太多时间。

创建目标表的空副本。 (在 SSMS 中右击表名,然后 Script Table As -> CREATE To -> New Query Editor Window;然后更改表名,删除索引等。只需做一个堆。)

一旦您的表副本存在,右键单击它并选择编辑前 n 行。

转到 Excel。突出显示您要带入的所有单元格并将它们复制到剪贴板。

返回 SSMS。在编辑器窗口中选择完整的第一(空)行(单击行左侧的箭头)。

点击粘贴。

根据您拥有的数据类型,它很有可能会直接放入您的堆中。从那里,您可以将 INSERT 重新插入到您的基表中。

【讨论】:

    【解决方案3】:

    我建议保存您的 Excel,在对象资源管理器中右键单击您的数据库,转到任务,然后导入数据。该向导非常易于使用,并且是最自然且最简单的获取数据的方法。请尝试在此处查看更多信息...

    https://docs.microsoft.com/en-us/sql/integration-services/import-export-data/connect-to-an-excel-data-source-sql-server-import-and-export-wizard

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      相关资源
      最近更新 更多