【问题标题】:SQL import/exportSQL 导入/导出
【发布时间】:2017-02-20 05:37:32
【问题描述】:

运行 select 语句以便稍后将输出插入回 SQL 的最直接方法是什么?数据集的大小会非常小,(可能少于 100 行)。我意识到有特定于数据库的导入/导出工具,但我想知道这是否可以仅使用 SQL 完成(可能还有一些 unix 命令行)。

编辑:

为了澄清,我想保存一组行:

select * from my_table where category='test'

然后,一段时间后,我希望将那些匹配的行重新插入到同一个表中。我假设 SQL 选择输出将保存到一个文件中,并且该文件将通过 sql 命令行实用程序重新播放。

【问题讨论】:

  • 你能说得更具体点吗?这个问题有大约 50 个不错的解决方案,一般来说(例如,连接字符串以直接在 SQL 中生成INSERT 语句)...另外,请指定您正在使用的数据库
  • 这很模糊,但如果有更多信息,这可能是一个有价值的问题,所以我希望它不会被关闭。要回答,我们需要知道您使用的是什么数据库。另外,您为什么要这样做?它是表的备份吗?复制数据等?
  • 将select语句放入表中,然后将结果插入回来。这将适用于任何数据库。但是,特定的语法可能取决于数据库。

标签: sql


【解决方案1】:

一种方法是通过将一些字符串连接在一起以生成 INSERT 语句来生成 SQL。 假设您使用的是 MSSQL:

SELECT'INSERT INTO Table1(Col1,Col2) VALUES('+CAST(Col1 AS VARCHAR(500))+',' +CAST(Col2 AS VARCHAR(500))+')' FROM Table1  

这不是一个很好的方法,因为显然它不能很好地扩展,但对于小型用途来说它并不算太糟糕,特别是如果你想要一个快速的答案。

我不知道您的数据库是如何构建的,但请确保您记得检查您插入的数据不会受到任何 PK / FK 约束的影响。

也可以看看这个问题:What is the best way to auto-generate INSERT statements for a SQL Server table?

您也可以考虑使用 BCP http://msdn.microsoft.com/en-us/library/aa196743(v=sql.80).aspx google for SQL BCP 将向您显示大量结果,这些结果应该会有所帮助。

我知道您需要基于代码的解决方案,但我只想提一下,您还可以从 SQL Management Studio 导出此类数据(假设您正在使用该数据)。

【讨论】:

    【解决方案2】:

    我不确定我是否理解正确,但您想运行选择并将结果插入到同一命令的表中?

    不确定是否可以完成,但我认为最像您想要的是 OUTPUT 语句:

    declare @mytables table
    (
       name varchar(50)
    )
    
    INSERT INTO @mytables    
    output inserted.*   
    select name 
    from sys.tables
    

    在这里,您将查询select name from sys.tables 的结果插入@mytables 并使用OUTPUT 子句呈现结果

    【讨论】:

      【解决方案3】:

      如果数据库是TableA { Id, Column1, Column2 }

      SELECT 
           'INSERT INTO [TableA] ([Id], [Column1], [Column2])' 
           + VALUES (' + [Id] + ', ''' + [Column1] + ''', ''' + [Column2] + ''')'
      FROM TableA
      

      结果将是:

      INSERT INTO [TableA] ([Id], [Column1], [Column2]) VALUES (1, 'Value1', 'Value2')
      INSERT INTO [TableA] ([Id], [Column1], [Column2]) VALUES (2, 'Value11', 'Value22')
      

      然后你可以将结果复制到一个文件中

      【讨论】:

        猜你喜欢
        • 2018-09-26
        • 1970-01-01
        • 2015-03-05
        • 1970-01-01
        • 2011-03-19
        • 2015-12-22
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多