【问题标题】:How to create sql script that generates insert statements with tables data in mysql/mssql如何创建在 mysql/mssql 中使用表数据生成插入语句的 sql 脚本
【发布时间】:2013-07-29 14:23:23
【问题描述】:

谁能提供一个生成的示例sql脚本

谁能帮帮我。 有没有办法创建一个脚本,为已有数据的表生成插入语句?

有一个具有这种结构的表 -> Country [id (int pk), name(nvarchar)] 生成此类和输出的脚本是什么样的?

输出:

INSERT INTO country (NAME) VALUES ('canada');

INSERT INTO country (NAME) VALUES ('england');

INSERT INTO country (NAME) VALUES ('italy');

INSERT INTO country (NAME) VALUES ('spain');

【问题讨论】:

  • 您可以使用大多数编程语言轻松地在循环中进行编程。
  • 我知道我可以很容易地用 c# 编写这个,但是我需要使用 sql 来完成
  • 为什么如何生成脚本很重要?
  • 设置了“--extended-insert=FALSE”的mysqldump怎么样?
  • @FloDoe 你能说得更具体些吗,因为我是 mysql 新手...

标签: mysql sql tsql


【解决方案1】:

这会做你想做的:

select concat ("insert into `Country` (`country`) values (\"", country, "\");") from Country order by id;

示例:http://sqlfiddle.com/#!2/efb4c/2

当然,您需要针对您的架构调整它。

【讨论】:

    【解决方案2】:

    如果您想将现有数据再次插入到您的表中(正如您在问题中提到的那样),那么您可以编写如下 sql:

    INSERT INTO country (NAME) SELECT NAME FROM COUNTRY;
    

    【讨论】:

      【解决方案3】:

      您可以使用 mysqldump 归档您询问的内容,尝试以下操作:

      mysqldump -u username -ppassword --skip-triggers --compact --no-create-info --extended-insert=FALSE databasename tablename1 tablename2 ... 
      

      如果您有很大的表,请记住单次插入会比扩展的要慢。

      另请参阅 mysqldump 上的文档:mysqldump — A Database Backup Program

      【讨论】:

        猜你喜欢
        • 2014-05-25
        • 1970-01-01
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        • 1970-01-01
        • 2016-08-29
        • 2017-10-05
        • 1970-01-01
        相关资源
        最近更新 更多