sud*_*u63 37 sql database sql-server-2008
我有一个包含以下数据的表:
Pk_Id ProductName Fk_CompanyId Price
------------------------------------------------------
1 AMX 1 10.00
2 ABC 1 11.00
3 APEX 1 12.00
4 AMX 1 10.00
5 ABC 1 11.00
6 APEX 1 12.00
7 AMX 2 10.00
8 ABC 2 11.00
9 APEX 2 12.00
Run Code Online (Sandbox Code Playgroud)
我想生成用于迁移Fk_CompanyId为1的记录的插入脚本.
有一个插入脚本选项可以为所有记录生成脚本,但我想过滤一些记录以迁移到另一个数据库.
Tam*_*mir 44
如果您使用的是SQL Management Studio,则可以右键单击数据库名称并选择"任务">"导入/导出数据",然后按照向导进行操作.
其中一个步骤称为"指定表复制或查询",其中有一个选项可以编写查询以指定要传输的数据,因此您只需指定以下查询:
select * from [Table] where Fk_CompanyId = 1
Run Code Online (Sandbox Code Playgroud)
Aar*_*and 19
SELECT 'INSERT SomeOtherDB.dbo.table(column1,column2,etc.)
SELECT ' + CONVERT(VARCHAR(12), Pk_Id) + ','
+ '''' + REPLACE(ProductName, '''', '''''') + ''','
+ CONVERT(VARCHAR(12), Fk_CompanyId) + ','
+ CONVERT(VARCHAR(12), Price) + ';'
FROM dbo.unspecified_table_name
WHERE Fk_CompanyId = 1;
Run Code Online (Sandbox Code Playgroud)
小智 15
CREATE PROCEDURE sp_generate_insertscripts
(
@TABLENAME VARCHAR(MAX),
@FILTER_CONDITION VARCHAR(MAX)='' -- where TableId = 5 or some value
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @TABLE_NAME VARCHAR(MAX),
@CSV_COLUMN VARCHAR(MAX),
@QUOTED_DATA VARCHAR(MAX),
@TEXT VARCHAR(MAX),
@FILTER VARCHAR(MAX)
SET @TABLE_NAME=@TABLENAME
SELECT @FILTER=@FILTER_CONDITION
SELECT @CSV_COLUMN=STUFF
(
(
SELECT ',['+ NAME +']' FROM sys.all_columns
WHERE OBJECT_ID=OBJECT_ID(@TABLE_NAME) AND
is_identity!=1 FOR XML PATH('')
),1,1,''
)
SELECT @QUOTED_DATA=STUFF
(
(
SELECT ' ISNULL(QUOTENAME('+NAME+','+QUOTENAME('''','''''')+'),'+'''NULL'''+')+'','''+'+' FROM sys.all_columns
WHERE OBJECT_ID=OBJECT_ID(@TABLE_NAME) AND
is_identity!=1 FOR XML PATH('')
),1,1,''
)
SELECT @TEXT='SELECT ''INSERT INTO '+@TABLE_NAME+'('+@CSV_COLUMN+')VALUES('''+'+'+SUBSTRING(@QUOTED_DATA,1,LEN(@QUOTED_DATA)-5)+'+'+''')'''+' Insert_Scripts FROM '+@TABLE_NAME + @FILTER
--SELECT @CSV_COLUMN AS CSV_COLUMN,@QUOTED_DATA AS QUOTED_DATA,@TEXT TEXT
EXECUTE (@TEXT)
SET NOCOUNT OFF
END
Run Code Online (Sandbox Code Playgroud)
ger*_*per 13
如果可能,请使用Visual Studio。自2014年3月发布以来,Microsoft SQL Server数据工具(SSDT)为此提供了内置功能:
注意:请注意,“查看数据”窗口就像SSMS“编辑前200行”一样-您可以立即编辑数据
(带有Microsoft SQL Server数据工具(SSDT)版本14.0.60812.0和Microsoft SQL Server 2012的Visual Studio 2015的Testet)
在 SSMS 中执行您的 sql 查询。从结果窗口中选择所有单元格并复制值。转到下面的网站,在那里您可以粘贴复制的数据并生成 sql 脚本。您也可以将来自 SSMS 的查询结果保存为 CSV 文件并在本网站中导入该 csv 文件。
http://www.convertcsv.com/csv-to-sql.htm
使用DBeaver客户端(支持 SQL Server),您可以对所需的记录执行 SELECT 查询,然后选择结果行,右键单击并复制为 SQL,您将在剪贴板中看到 INSERT 语句:
HeidiSQL还支持连接到 SQL Server 并导出选定的行(您可以在 SQL 查询本身中过滤行,或检索所有行并在数据网格中选择它们):
归档时间: |
|
查看次数: |
98121 次 |
最近记录: |