将选择结果转换为插入脚本 - SQL Server
我有 SQL Server 2008、SQL Server Management Studio。
我需要从一个数据库中的表中选择数据并将其插入到另一个数据库中的另一个表中。
如何将我的选择返回的结果转换为 INSERT INTO ...
?
评论澄清:虽然我相信这可以通过 INSERT INTO SELECT
或 SELECT INTO
解决,但我确实需要生成 INSERT INTO ...
>。
I have SQL Server 2008, SQL Server Management Studio.
I need to select data from a table in one database and insert into another table in another database.
How can I convert the returned results from my select into INSERT INTO ...
?
Clarification from comments: While I believe this could be solved by a INSERT INTO SELECT
or SELECT INTO
, I do need to generate INSERT INTO ...
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(18)
这是另一种方法,在某些情况下可能比安装插件或外部工具更容易:
选择[您需要的任何内容]
INTO temp.table_name
来自[...等...]
。temp.table_name
,然后单击“下一步”。INSERT
语句出现在新的查询窗口中。[temp.table_name]
更改为[your_table_name]
。删除表[temp.table_name]
。Here is another method, which may be easier than installing plugins or external tools in some situations:
select [whatever you need]
INTO temp.table_name
from [... etc ...]
.temp.table_name
in the "Choose Objects" screen, click Next.INSERT
statements appear in a new query window.[temp.table_name]
to[your_table_name]
.drop table [temp.table_name]
.在SSMS中:
右键单击数据库>任务>生成脚本
下一步
选择“选择特定数据库对象”并选中要编写脚本的表,下一步
点击选项列表中的
高级>
,向下滚动到底部并查找“要编写脚本的数据类型”并将其更改为“仅数据”>确定选择“保存到新查询窗口”>下一页>下一页>完成
现在所有 180 行都写为 180 个插入语句!
In SSMS:
Right click on the database > Tasks > Generate Scripts
Next
Select "Select specific database objects" and check the table you want scripted, Next
Click
Advanced >
in the list of options, scroll down to the bottom and look for the "Types of data to script" and change it to "Data Only" > OKSelect "Save to new query window" > Next > Next > Finish
All 180 rows now written as 180 insert statements!
本机方法:
例如,如果您有表,
您可以这样做:
Native method:
for example if you have table
You can do this:
SSMS 工具包(就像啤酒一样免费)具有多种出色的功能 - 包括 从表生成 INSERT 语句。
更新:对于 SQL Server Management Studio 2012(及更高版本),SSMS Toolpack 不再免费,但需要适度的许可费。
SSMS Toolpack (which is FREE as in beer) has a variety of great features - including generating INSERT statements from tables.
Update: for SQL Server Management Studio 2012 (and newer), SSMS Toolpack is no longer free, but requires a modest licensing fee.
1- 脚本说明
A) 在表中插入数据的语法如下
C) 从现有数据中获取上述数据
表我们必须写选择
以这样的方式查询输出
将采用上述脚本的形式
D)然后最后我连接了
上面要创建的变量
最终脚本将
在执行时生成插入脚本
E)
F)最后执行上述查询
EXECUTE(TEXT)
G)
QUOTENAME()
函数用于包装引号 H)
ISNULL
内的列数据使用 ,因为如果任何行具有
NULL
查询失败的任何列的数据
并返回 NULL 这就是为什么要避免
我已经使用了 ISNULL
I)并创建了 sp sp_generate_insertscripts
同样
1- 只需输入您想要
插入脚本
的表名称2- 如果您想要特定结果,则过滤条件
1- Explanation of Scripts
A)Syntax for inserting data in table is as below
C)To get above data from existing
table we have to write the select
query in such way that the output
will be in form of as above scripts
D)Then Finally i have Concatenated
above variable to create
final script that's will
generate insert script on execution
E)
F)And Finally Executed the above query
EXECUTE(TEXT)
G)
QUOTENAME()
function is used to wrapcolumn data inside quote
H)
ISNULL
is used because if any row hasNULL
data for any column the query fails
and return
NULL
thats why to avoidthat i have used
ISNULL
I)And created the sp
sp_generate_insertscripts
for same
1- Just put the table name for which you want
insert script
2- Filter condition if you want specific results
可以通过Visual Studio SQL Server 对象资源管理器来完成。
您可以从上下文菜单中单击“查看数据”以获取必要的表格、过滤结果并将结果另存为脚本。
It's possible to do via Visual Studio SQL Server Object Explorer.
You can click "View Data" from context menu for necessary table, filter results and save result as script.
使用 Visual Studio,执行以下操作
创建 SQL Server 类型的项目 --> SQL Server 数据库项目
打开 sql server explorer CTL-\ , CTL-S
通过右键单击 SQL SERVER 图标添加 SQL Server。选择添加新服务器
,导航到您感兴趣的表,
右键单击-->查看数据
单击左上角的单元格以突出显示所有内容(ctl-A 似乎不起作用)
右键单击 --> SCript
这太棒了。多年来我已经尝试过上面列出的所有内容。我知道有一个工具可以做到这一点以及更多,但想不出它的名字。但它非常昂贵。
祝你好运。我刚刚想通了这一点。还没有对它进行广泛的文本字段等测试,但看起来它会让你走得很远。
格雷格
Using visual studio, do the following
Create a project of type SQL Server-->SQL Server Database Project
open the sql server explorer CTL-\ , CTL-S
add a SQL Server by right clicking on the SQL SERVER icon. Selcet ADD NEW SERVER
navigate down to the table you are interested in
right click--> VIEW DATA
Click the top left cell to highlight everything (ctl-A doesnt seem to work)
Right Click -->SCript
This is fabulous. I have tried everything listed above over the years. I know there is a tool out there that will do this and much more, cant think of the name of it. But it is very expensive.
Good luck. I just figured this out. Have not tested it extensively w/ text fields etc, but it looks like it gets you a long ways down the road.
Greg
使用 into 语句创建一个单独的表
例如
Select * into Test_123 from [dbo].[Employee] where Name like '%Test%'
转到数据库
右键单击数据库
单击生成脚本
选择您的餐桌
选择高级选项并选择属性“仅数据”
选择文件“在新查询中打开”
Sql将为您生成脚本
Create a separate table using into statement
For example
Select * into Test_123 from [dbo].[Employee] where Name like '%Test%'
Go to the Database
Right Click the Database
Click on Generate Script
Select your table
Select advanace option and select the Attribute "Data Only"
Select the file "open in new query"
Sql will generate script for you
这是一个更通用的解决方案(可以比问题所要求的多一点),并且可以在查询窗口中使用,而无需创建新的存储过程 - 在生产数据库中非常有用,例如您没有写访问权限的情况。
要使用该代码,请根据解释其用法的行内注释进行修改。然后,您可以在查询窗口中运行此查询,它将打印您需要的 INSERT 语句。
This is a more versatile solution (that can do a little more than the question asks), and can be used in a query window without having to create a new stored proc - useful in production databases for instance where you don't have write access.
To use the code, please modify according to the in line comments which explain its usage. You can then just run this query in a query window and it will print the INSERT statements you require.
我创建了以下
过程
:然后您可以这样使用它:
输出将类似于:
如果您只想获取一系列行,请使用
@top
参数如下:I created the following
procedure
:Then you can use it that way:
The output would be something like that:
If you just want to get a range of rows, use the
@top
parameter as bellow:您可以在 SSMS 中选择“结果到文件”选项,并将选择结果导出到文件,并在结果文件中进行更改,最后使用 BCP - 批量复制,您可以插入数据库 2 的表 1 中。
我认为对于批量插入,您必须将 .rpt 文件转换为 .csv 文件
希望它会有所帮助。
You can Choose 'Result to File' option in SSMS and export your select result to file and make your changes in result file and finally using BCP - Bulk copy you can insert in table 1 in database 2.
I think for bulk insert you have to convert .rpt file to .csv file
Hope it will help.
我遇到了类似的问题,但我需要能够从查询(带有过滤器等)创建 INSERT 语句,
因此我创建了以下过程:
然后您可以通过将查询的输出写入临时表并运行来使用它程序:
注意:
此过程仅将值转换为字符串,这可能会导致数据看起来有点不同。例如,对于 DATETIME,秒数将会丢失。
I had a similar problem, but I needed to be able to create an INSERT statement from a query (with filters etc.)
So I created following procedure:
You can then use it by writing the output of your query into a temp table and running the procedure:
Note:
This procedure only casts the values to a string which can cause the data to look a bit different. With DATETIME for example the seconds will be lost.
您可以使用专为导入和导出操作设计的Sql Server集成服务包。
如果你完全安装了Sql Server,VS有一个用于开发这些包的包。
Business Intelligence Development Studio 中的集成服务
You can Use Sql Server Integration Service Packages specifically designed for Import and Export operation.
VS has a package for developing these packages if your fully install Sql Server.
Integration Services in Business Intelligence Development Studio
我认为使用即席查询也是可能的
您可以将结果导出到 excel 文件,然后将该文件导入到数据表对象中,或者按原样使用它,然后将 excel 文件导入到第二个数据库中
看看这个链接
这可以帮助你很多。
http://vscontrols.blogspot.com /2010/09/import-and-export-excel-to-sql-server.html
I think its also possible with adhoc queries
you can export result to excel file and then import that file into your datatable object or use it as it is and then import the excel file into the second database
have a look at this link
this can help u alot.
http://vscontrols.blogspot.com/2010/09/import-and-export-excel-to-sql-server.html
如果您使用的是 Oracle(或将应用程序配置到 SQL Server),则 Oracle SQL Developer 会为您执行此操作。为表选择“卸载”并按照选项进行操作(如果您不希望所有表创建内容,请取消选中 DDL)。
If you are using Oracle (or configure the application to the SQL Server) then Oracle SQL Developer does this for you. choose 'unload' for a table and follow the options through (untick DDL if you don't want all the table create stuff).
您可以使用这个Q2C.SSMSPlugin,它是免费且开源的。您可以右键单击并选择“执行查询命令... -> 查询插入...”。享受)
You can use this Q2C.SSMSPlugin, which is free and open source. You can right click and select "Execute Query To Command... -> Query To Insert...". Enjoy)
我发现了这个 SSMS Boost 插件,它是免费的并且确实可以做到这一点。您可以右键单击结果并选择将数据脚本为。
I found this SSMS Boost addon, which is free and does exactly this among other things. You can right click on the results and select Script data as.
您可以使用 INSERT INTO SELECT 语句将选择查询的结果插入表中。 http://www.w3schools.com/sql/sql_insert_into_select.asp
示例:
You can use an
INSERT INTO SELECT
statement, to insert the results of a select query into a table. http://www.w3schools.com/sql/sql_insert_into_select.aspExample: