大家在学习数据库的时候,需要用到大量的数据,又因为需要符合一定规则的数据资源,网上找有麻烦,但总不可能一个一个输入数据,那太苦逼了。因此C#学习成果就要发挥作用了,比如随机数产生、字符串合并、文件读写等等。
下面分享一个例子:随机产生姓名,并将大量数据写入数据库,包括依性别产生姓名、随机产生年龄等等。
//首先需要将姓、名字(男女)分别导入到文件中。
string [] xing=System.IO.File.ReadAllLines("姓.txt", Encoding.UTF8);//注意编码格式,也有可能是Encoding.Default
//由于男孩名字文件里面的男孩名字需要我们自己用正则表达式筛选出来,因此需要经过一定的处理。
//这里用一个泛式,因为使用泛式比较方便。
List<string> boyname = new List<string>();
MatchCollection mc=Regex.Matches((System.IO.File.ReadAllText("男孩名字.txt", Encoding.UTF8)),@"\w{2}");
//注意正则表达式根据文件内容来正确编辑。
foreach (Match m in mc)
{
boyname.Add(m.Value);
}
//女孩名字文件里面的内容也需要筛选,这里用到一个字符串的Split方法来筛选。
string [] girname=(System.IO.File.ReadAllText("女孩名字.txt", Encoding.Default)).Split(new char [] { '、',',', '。', ',', '.' }, StringSplitOptions.RemoveEmptyEntries);
//此时数据xing具有一大串姓氏的数据;boyname里面也有一系列男孩名字的数据;数组girlname有一大串女孩名字的数据。
//要产生数据就需要产生一个随机概念。
Random rd=new Radom();
int shujuliang=1000;//需要产生多少了数据量
string gender;//随机产生的性别用一个变量接受
string tempname;//临时一个变量接受产生的名字
List<string> insertyuju=new List<string>();//用一个泛式集合来将写好的SQL语句,以便用在SQL管理工具中插入数据
for (int i = 0; i < shujuliang; i++)
{
if (rd.Next(1,3)==1)//随机产生1代表男,产生2代表女
{
gender= "男";
tempname=string.Format("{0}{1}",xing[rd.Next(xing.Length)].Trim(),boyname[rd.Next(boyname.Count)].Trim());
}
else
{
gender = "女";
tempname=string.Format("{0}{1}",xing[rd.Next(xing.Length)].Trim(),girlname[rd.Next(girlname.Length)].Trim());
}
insertyuju.Add(string.Format("insert into StudentShiWan(sid,name,age,gender,score) values({0},'{1}',{2},'{3}',{4});",i+1,tempname,rd.Next(20,51),gendervalue,i+1));
}
//之后将insertyuju的内容写入到一个sql文件中,
System.IO.File.WriteAllLines(@"C:\Users\lenovo\Documents\SQL Server Management Studio\Projects\随机产生姓名文件.sql",insertyuju,Encoding.Default);//当然也要注意编码格式
下面分享一个例子:随机产生姓名,并将大量数据写入数据库,包括依性别产生姓名、随机产生年龄等等。
//首先需要将姓、名字(男女)分别导入到文件中。
string [] xing=System.IO.File.ReadAllLines("姓.txt", Encoding.UTF8);//注意编码格式,也有可能是Encoding.Default
//由于男孩名字文件里面的男孩名字需要我们自己用正则表达式筛选出来,因此需要经过一定的处理。
//这里用一个泛式,因为使用泛式比较方便。
List<string> boyname = new List<string>();
MatchCollection mc=Regex.Matches((System.IO.File.ReadAllText("男孩名字.txt", Encoding.UTF8)),@"\w{2}");
//注意正则表达式根据文件内容来正确编辑。
foreach (Match m in mc)
{
boyname.Add(m.Value);
}
//女孩名字文件里面的内容也需要筛选,这里用到一个字符串的Split方法来筛选。
string [] girname=(System.IO.File.ReadAllText("女孩名字.txt", Encoding.Default)).Split(new char [] { '、',',', '。', ',', '.' }, StringSplitOptions.RemoveEmptyEntries);
//此时数据xing具有一大串姓氏的数据;boyname里面也有一系列男孩名字的数据;数组girlname有一大串女孩名字的数据。
//要产生数据就需要产生一个随机概念。
Random rd=new Radom();
int shujuliang=1000;//需要产生多少了数据量
string gender;//随机产生的性别用一个变量接受
string tempname;//临时一个变量接受产生的名字
List<string> insertyuju=new List<string>();//用一个泛式集合来将写好的SQL语句,以便用在SQL管理工具中插入数据
for (int i = 0; i < shujuliang; i++)
{
if (rd.Next(1,3)==1)//随机产生1代表男,产生2代表女
{
gender= "男";
tempname=string.Format("{0}{1}",xing[rd.Next(xing.Length)].Trim(),boyname[rd.Next(boyname.Count)].Trim());
}
else
{
gender = "女";
tempname=string.Format("{0}{1}",xing[rd.Next(xing.Length)].Trim(),girlname[rd.Next(girlname.Length)].Trim());
}
insertyuju.Add(string.Format("insert into StudentShiWan(sid,name,age,gender,score) values({0},'{1}',{2},'{3}',{4});",i+1,tempname,rd.Next(20,51),gendervalue,i+1));
}
//之后将insertyuju的内容写入到一个sql文件中,
System.IO.File.WriteAllLines(@"C:\Users\lenovo\Documents\SQL Server Management Studio\Projects\随机产生姓名文件.sql",insertyuju,Encoding.Default);//当然也要注意编码格式
//之后的步骤就简单了,在数据库管理工具新建查询就OK了,但是注意SQL Server2008需要将insert功能打开,因为处于安全考虑。-----"set IDENTITY_INSERT on;”关闭用"set IDENTITY_INSERT off;”
附上代码制造数据
备注:写于2013年3月26日