我相信你在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>