我相信你在C或Python或任何你感觉方便的应用程序路线上走在正确的轨道上。这是一个可以编写脚本的不同方法。
从Excel导出数据为CSV
$ cat test.csv
Jacob Jacobs,M
Rogers Bogers,M
Marsha Darsha,F
Tina Fina,F
Mono Bono,M
导入到sqlite的
sqlite> .mode csv
sqlite> .import test.csv proxy
sqlite> select * from proxy2;
"Jacob Jacobs",M
"Rogers Bogers",M
"Marsha Darsha",F
"Tina Fina",F
"Mono Bono",M
这记住男性和女性的数量
比方说,你的表被称为main
其中你有真实姓名,并且你想要将它们从proxy
表中随机更改为名称。
sqlite> .schema
CREATE TABLE proxy (fullname text, gender text);
CREATE TABLE main(fullname TEXT,gender TEXT,age INT);
sqlite> select * from main;
fullname,gender,age
"John Smith",M,20
"Marshall Dubin",M,20
"Kate Ortiz",F,20
"Ron Bunsh",M,20
"Kelly Torro",F,20
sqlite> select count(*) from main where gender='M';
count(*)
3
sqlite> select count(*) from main where gender='F';
count(*)
2
让你的应用程序记住这个信息,那里有3个男性和2个女性。
执行update语句反复用不同的偏移
sqlite> update main
...> set fullname = (
...> select fullname from proxy where gender='M' order by random() limit 1)
...> where rowid = (
...> select rowid from main where gender='M' order by rowid limit 0,1);
更改limit 0,1
到limit 1,1
并重新执行。继续下去,直到你到达limit 2,1
。由于您有3条男性记录,因此从限制0,1到限制2,1。
重复同样的事情来隐藏女性记录。将gender='M'
更改为gender='F'
。由于只有2位女性,您将执行两次update
。一旦与limit 0,1
然后与limit 1,1
。
如果您在事务中运行此操作,我希望您的脚本能够快速通过更新。
结束结果
WAS
fullname gender age
---------- ---------- ----------
John Smith M 20
Marshall D M 20
Kate Ortiz F 20
Ron Bunsh M 20
Kelly Torr F 20
IS脚本的SQLite与击的
fullname gender age
------------- ---------- ----------
Rogers Bogers M 20
Jacob Jacobs M 20
Tina Fina F 20
Jacob Jacobs M 20
Jasmine F 20
实施例 - http://andreaolivato.tumblr.com/post/133473114/using-sqlite3-in-bash 其他选项
- 在您的应用程序中,将假名称保存在两个数组中 - 一个用于男性,一个用于女性。我们的想法是能够按性别需求拉动随机假名字
- 通过记录做一个
select rowid, gender from main order by rowid
- 迭代
- 如果性别是男的,拉从男性阵列随机假记录;女记录
- 运行
update main set fullname=<fake-record> where rowid=<selected-row-id>