如何创建脚本来创建表

时间:2018-06-25 03:16:18

标签: sql sql-server insert ssms

我正在使用SQL Server Management Studio 2017。我在本地计算机上有一张桌子。假设其名称为Email。在Email表中,有一个列名Language,其值可以为'en''zh'。在此Language列旁边,还有更多列。

现在我的同事也具有相同的表,但机器不同,并且他只有Languageen的行。他还没有语言为zh的行。

我如何使用该软件生成SQL脚本以将数据插入到他的表中,但是仅包含行where Language = 'zh',以便两个表都相同。

更清楚地说,我需要向他发送INSERT脚本,其中还包含数据值,以便他可以将INSERT插入他本地计算机中的数据库。

还是其他方式?

3 个答案:

答案 0 :(得分:1)

这是您想要的吗?

insert into colleague.dbo.email ( . . . )
    select . . . 
    from my.dbo.email
    where language = 'zh';

答案 1 :(得分:0)

有两种方法-第一种是快速的并且不需要代码,但是您需要手动摆脱不需要的行,另一种更加灵活,但是您必须对其进行编码。您也可以使用第三方工具来完成此操作。

如果只想执行一次,则可以执行以下操作(这是来自不同版本的SSMS,但应该类似)

右键单击数据库,选择任务,选择生成脚本。然后选择所需的表,继续,然后在高级设置中找到“要编写脚本的数据类型”并将其更改为数据。这将生成一个脚本来加载表中的所有数据-您需要对其进行编辑以仅加载所需的行。

另一种选择是编写一个脚本,该脚本基本上可以制作自己想要的数据。您首先需要进行设置,如果要更改表格式,则需要对其进行调整,但是您可以编辑选择脚本,使其仅获取所需的数据。我确定您可以编写一个脚本来自动为您创建该脚本,但是我从来不需要它,因此我没有考虑过。

类似这样的东西

With baseRows as 
(
    --This bit gets the data you want
    Select E.*
        , ROW_NUMBER() over(ORDER BY ID) as RowNo
    From dbo.Email E
    Where E.Language = 'zh'  -- whatever selection you need here
)
, selectRows as
(
    --This bit creates the data select statments to set the data to import
    Select
            case when BR.RowNo = 1 then '' else 'Union All ' end
            + 'Select ' 
            + convert(varchar(10), BR.userID) + ' as userID, '  -- required integer example
            + case when BR.backupID is null then 'NULL' else CONVERT(varchar(10), BR.backupID) end + ' as backupID, '  -- nullable integer example
            + '''' + BR.Name + ''' as name, '  -- required nvarchar example
            + case when BR.groupname IS null then 'NULL' else '''' + BR.groupname + '''' end + ' as groupname, '  --nullable varchar example
            + CONVERT(varchar(2), BR.isActive) + ' as isActive, '  --bit example        
        as SQL
    from baseRows BR
)

Select  
    --This creates the insert command row (top row) of the final query
  'Insert into Email (
      userID
      , backupID
      , name
      , groupName
      , IsActive
)' as SQL
UNION ALL
Select SQL from baseRows   --and adds the data to the following rows

如果运行此脚本,则输出将是您想要将数据加载到另一台计算机上的脚本。

答案 2 :(得分:0)

右键单击数据库名称(数据库所在的表)--->任务--->生成脚本--->下一个--->选择特定的数据库对象--->选择表--->保存到文件= ADVANCED --->单击高级--->要编写脚本的数据类型=“仅数据” --->给出路径(存储插入命令的位置)