大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说使用SMO程序化生成SQL Server表数据「建议收藏」,希望您对编程的造诣更进一步.
作为ETL的一部分,有时候就是需要把数据的Insert脚本生成出来,然后人肉拷贝到另一个地方执行。
熟悉SMSS的同学们都知道,有个生成脚本的任务,可以生成数据库的create脚本啊什么的,其实也能够生产表中的数据。
自动化的ETL总不能连导出数据都人肉。。。一是容易出错,二是太low了。
C#控制台代码可以搞定这些,直接上代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using Microsoft.SqlServer.Management.Common; using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management; using Microsoft.SqlServer.Management.Sdk.Sfc; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { String todayDate = DateTime.Now.Day + "_" + DateTime.Now.Month + "_" + DateTime.Now.Year; String backupDirectory = "1a:\DBBackup\"; String backupFileName = backupDirectory + todayDate + ".sql"; if (File.Exists(backupFileName)) { File.Delete(backupFileName); } StreamWriter sw = File.CreateText(backupFileName); Console.WriteLine(backupFileName); Console.ReadKey(); Console.WriteLine("hello!"); //Console.ReadLine(); String dbName = "2oy"; // database name Server srv = new Server("3lba1"); // Reference the database. Database db = srv.Databases[dbName]; // Define a Scripter object and set the required scripting options. Scripter scrp = new Scripter(srv); scrp.Options.ScriptSchema = false; scrp.Options.ScriptDrops = false; scrp.Options.WithDependencies = false; scrp.Options.Indexes = false; // To include indexes scrp.Options.DriAllConstraints = false; // to include referential constraints in the script scrp.Options.ScriptData = true; //Data include!!!!!! //Iterate through the tables in database and script each one. foreach (Table tb in db.Tables) { if (!tb.IsSystemObject) { foreach (string s in scrp.EnumScript(new Urn[] { tb.Urn })) { sw.WriteLine(s); sw.Flush(); } } } /* * 此方法不能生成带数据的脚本,但是可以生成schema脚本 foreach (Table tb in db.Tables) { System.Collections.Specialized.StringCollection sc = scrp.Script(new Urn[]{tb.Urn}); foreach (string st in sc) { Console.WriteLine(st); } Console.WriteLine("--"); } */ } } }
代码100分
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9159.html