日期:2014-05-17  浏览次数:20665 次

一个懒人的问题,大家勿喷。
不知道大家在写SQL语句的时候,在插入测试数据的时候很麻烦。如下是要用到的数据:
员工A 10 2011-9-21 00:56:01
员工A 15 2011-9-11 11:56:01
员工A 30 2011-9-12 23:56:01
员工A 10 2011-9-4 11:56:01
员工B 10 2011-9-11 05:56:01
员工B 10 2011-9-12 05:56:01
员工B 30 2011-9-4 08:56:01
员工B 10 2011-9-21 05:56:01
怎么批量变成如下格式:
'员工A',10,'2011-9-21 00:56:01' 
 '员工A',15,'2011-9-11 11:56:01' 
 '员工A',30,'2011-9-12 23:56:01' 
 '员工A',10,'2011-9-4 11:56:01'
 '员工B',10,'2011-9-11 05:56:01' 
 '员工B',10,'2011-9-12 05:56:01' 
 '员工B',30,'2011-9-4 08:56:01' 
 '员工B',10,'2011-9-21 05:56:01'
本人想到了用excel可以替换大部分,不知道各位还有没有更好的方法?

------解决方案--------------------
可以用excel,先指定好公式,我以前有一个公式的,比如你的例子里面,实际上会有7列,3列是你的元数据,3列是分别对你元数据每列套用一定的公式,最后一列就是组合那3列已经公式化的数据。但是我手上没有那个excel不然可以给你参考,具体思路就是这样了。你自己研究一下吧。
------解决方案--------------------
忘了说,第七列不仅是组合,而且是组合成insert语句。然后....你懂得
------解决方案--------------------
1、最简单的,就是写一行,复制粘贴,当然这样肯定就重复了。
2、替换法。就像楼主以及楼上所说。替换一些数据,成为自己需要的测试用例。
3、自己写个简单程序,生成需要的测试用例。功能上只需要可以设置列的个数(即:各个字段),以及每列的数据类型。






------解决方案--------------------
用excel做吧,比较少的数据,就直接写一行复制粘贴,然后修改下
------解决方案--------------------
粘贴到excel中,直接导入到临时表中,不用建表,神马都不用,很快,然后爱咋折腾咋折腾,
用起来非常爽
------解决方案--------------------
SQL code


--谢谢LZ,给了一个困扰我很久的思路
--有了方向实现是很简单的
declare @sql varchar(max)= '员工A 10 2011-9-21 00:56:01
员工A 15 2011-9-11 11:56:01
员工A 30 2011-9-12 23:56:01
员工A 10 2011-9-4 11:56:01
员工B 10 2011-9-11 05:56:01
员工B 10 2011-9-12 05:56:01
员工B 30 2011-9-4 08:56:01
员工B 10 2011-9-21 05:56:01'
while patindex('% __:%',@sql) > 0
set @sql = STUFF(@sql,patindex('% __:%',@sql),1,'T') 
print  'INSERT INTO #TB select ''' + replace(REPLACE(@sql,' ',''', '''),
char(13) + char(10),''''+ char(13) + char(10) +'      union all select '+''''
) + ''''

/*
INSERT INTO #TB select '员工A', '10', '2011-9-21T00:56:01'
      union all select '员工A', '15', '2011-9-11T11:56:01'
      union all select '员工A', '30', '2011-9-12T23:56:01'
      union all select '员工A', '10', '2011-9-4T11:56:01'
      union all select '员工B', '10', '2011-9-11T05:56:01'
      union all select '员工B', '10', '2011-9-12T05:56:01'
      union all select '员工B', '30', '2011-9-4T08:56:01'
      union all select '员工B', '10', '2011-9-21T05:56:01'*/

------解决方案--------------------
SSMS的查询界面里可以直接查找/替换;
你也可以通过专门的工具软件生成测试数据,比如PowerDesigner就可以。
------解决方案--------------------
直接导入EXCEL到数据库临时表后再Insert到相应的表中,该方法是否符合楼主的要求呢?
观摩学习!世界因为懒人思想存在而进步!
------解决方案--------------------
顶一下磊仔
探讨

SQL code


--谢谢LZ,给了一个困扰我很久的思路
--有了方向实现是很简单的
declare @sql varchar(max)= '员工A 10 2011-9-21 00:56:01
员工A 15 2011-9-11 11:56:01
员工A 30 2011-9-12 23:56:01
员工A 10 2011-9-4 11:56:01
员工B 10 2011-9-11 05:56……

------解决方案--------------------
可以用正则替换的吧。