我有一个Windows窗体应用程序链接到一个包含大量表的数据库。
我有两个按钮(导入和导出),当单击导出时,这应该会触发一个存储过程,该存储过程只生成一个字符串来导出数据(加载INSERT语句--而不是表定义)。由此生成的字符串将保存为脚本文件。这以后将用于将数据导入到不同的数据库中。
我正在考虑创建一个存储过程来完成这个任务(但我不完全确定如何做到这一点),或者如果有更好的方法,我愿意接受任何建议。
发布于 2015-04-27 13:41:38
使用Management生成脚本。
右键单击对象资源管理器中的数据库,从上下文菜单中选择“任务”,然后选择“生成脚本”。
在对话框中,选择要从脚本中输出数据的表。在下一页上设置目标,然后单击“高级”按钮。有找到“类型的数据脚本”选项-选择“数据只”。
按照编辑的问题,您可以使用Microsoft.SqlServer.Management.Smo.Scripter (与SSMS使用的库相同)来自动编辑。
发布于 2015-04-27 13:47:58
如果您想要生成一个将为您生成insert语句的脚本,您可以使用一个查询来构建它,如.
SELECT
'SELECT ' + CAST(ID AS VARCHAR(10)) + ',''' +
VarcharField1 + ''',''' +
VarcharField2 + ''' UNION ALL'
FROM Example
如果将结果显示为文本(Ctrl+T),则可以轻松地获取结果以进行进一步操作。它会产生这样的东西..。
SELECT 1,'Row1Field1','Row1Field2' UNION ALL
SELECT 2,'Row2Field1','Row2Field2' UNION ALL
SELECT 3,'Row3Field1','Row3Field2' UNION ALL
SELECT 4,'Row4Field1','Row4Field2' UNION ALL
您需要在结果之前添加一个INSERT [TableName]
,并修剪最后一个UNION ALL
,但这是可行的。我以前用过好几次了。SQL示例
https://stackoverflow.com/questions/29896750
复制相似问题