1. 程式人生 > >巧用UltraEdit指令碼“造資料”

巧用UltraEdit指令碼“造資料”

        造資料可能是日常開發測試中的一項常見工作。筆者當前的專案中需要對系統中的歷史資料進行統計分析,由於專案處於初級階段,資料量比較小,所謂的“歷史”資料更是無從獲取,於是就需要根據現有的資料編造一些資料來進行功能測試。

        造資料的工具可能有很多,我們甚至可以編寫一個java程式直接用jdbc操作資料庫,來批量生成資料。筆者使用的UltraEdit擁有強大的列操作功能,同時筆者還想挖掘一下其強大的指令碼功能,於是著手寫了一個js指令碼。基本思想是:從資料庫中匯出現有資料的sql語句,用指令碼找到其中需要替換的部分,乘以給定的係數作為新資料。

        首先是從資料庫中匯出現有的資料,例如筆者需要的資料表中有70條資料,匯出的sql語句類似下列語句:

Insert into T_REPORTSYNTHESIS (REPORTCODE,ZONEID,STATISTICDATE,DEVNAME,REPORTDATA,DATAUNIT) values ('1','320200',to_timestamp('01-11月-13','DD-MON-RR HH.MI.SSXFF AM'),'011000',’1262’,null);
              這70條資料是2013年11月1日的資料,現在我們來模擬70條2012年11月1日的資料。利用UltraEdit的列模式,我們可以很方便地將這70條資料的年份改為2012年,在id(REPORTCODE)為一位的行id前面加上’10’,在id為兩位的行id前面’1’,這就得到了id為101到170之間的新的70條資料。
        改變了資料的日期還不夠,我們還需要修改各條資料的值(REPORTDATA列,上面sql語句標為黃色的部分)。這時候就輪到js指令碼大顯身手了:

var ln = parseInt( UltraEdit.getString("從哪一行開始?",1) );
var doc = UltraEdit.activeDocument;
doc.findReplace.regExp = true; // 開啟正則表示式

UltraEdit.perlReOn();//啟用正則表示式的perl模式
var whatToFind = "(?=.+')(\\d)+(\\.\\d+)?(?=',null)";

//doc.top();
doc.gotoLine(ln, 0);
//doc.write(UltraEdit.regexMode.toString());

var ratio = parseFloat( UltraEdit.getString("輸入轉換比率",1) );
while(doc.findReplace.find(whatToFind)) {
	var found = doc.selection;
	var whatToReplace = parseFloat(found)*ratio;
//	doc.write(ratio.toString());
	//很不人性化的一點:數字必須轉化為字串!
	doc.findReplace.replace(found,whatToReplace.toString());
}
             腳本里比較重要的是正則表示式,我們需要用一個正則表示式精確定位到待修改的資料列:
var whatToFind = "(?=.+')(\\d)+(\\.\\d+)?(?=',null)";

             這個正則表示式選擇了前面是單引號,後面是“’,null”的一串數字(整數或浮點數)。其中用到了零寬度斷言負向零寬度斷言,關於正則表示式的技術細節,詳見筆者的另一篇博文《正則表示式--筆記與實戰(Eclipse文字替換)》。

        要在UltraEdit的腳本里啟用這種複雜的正則表示式,需要啟用正則表示式的perl模式:
UltraEdit.perlReOn();
             為了使用起來更方便,我們兩次呼叫UltraEdit.getString,分別來動態獲取要開始處理的起始行數,以及我們造資料使用的一個係數:我們將使用這個係數乘以現有的資料,例如乘以1.25,即可造出一批比現有資料大25%的新資料,let’s do it !

             我們將上文提到的那段程式碼儲存為一個js檔案,例如“reduceSelectedNumByPercent.js”,然後點選“指令碼”選單中的“指令碼”項,新增這個指令碼檔案到選單下方的列表,然後在需要執行指令碼的編輯檢視下,點選選單下方的指令碼項即可,現在,用這個文字編輯器盡情的造資料吧!造完之後,當然不要忘了在你的資料庫客戶端執行最終的Sql語句。

        利用指令碼,我們可以直接在編輯器中,“視覺化”地完成很多強大的功能,大家一起來挖掘吧。下面附上UltraEdit官方關於指令碼的說明文件:

UltraEdit/UEStudio 的指令碼通過嵌入 JavaScript 引擎啟用。 這允許使用者在享受完整 JavaScript 語言的強大和靈活的同時使用以下指定的命令與編輯器(應用程式物件命令),或在編輯器中開啟的文件(文件物件命令)進行特別互動。 指令碼可以在 UltraEdit/UEStudio 中編輯,在預設詞語檔案中帶有內建 JavaScript 的語法加亮:


例如,該指令碼將生成一系列數字並將其寫入活動的文件:

function recall(num) {
    UltraEdit.activeDocument.write(num + "\r\n");
}
function num() {
    var i = 0, j = 1, n = 0;
    while (n < 10) {
        recall(i);
        var t = i;
        i = j;
        j += t;
        n++;
    }
}
num();

更多演示指令碼位於安裝目錄的“scripts”子目錄下。要檢視簡短的指令碼指南,請點選這裡

在指令碼中包含指令碼

需要的話,使用者可以在指令碼中包含一個外部指令碼,參考以下的方法:

// include externalScript.js

// include C:\full path\to external\script\externalScript.js

這個包含命令必須在前面加上行註記符。如果一個使用者因除錯的原因要排除這個包含的指令碼,所包含的內容可以以兩個行註記排除,如:

// // include externalScript.js

預設變數值

UltraEdit 支援一些變數值,當每次 UltraEdit 有指令碼啟動時它們會被初始化為預設值:

區塊模式均為關閉。

十六進位制模式均為關閉。

插入模式均為開啟。

正則表示式引擎均設定為 Perl。

這些項會在每次執行一個指令碼時被設定。

應用程式物件命令

UltraEdit 是全部 UltraEdit 操作所基於的應用程式物件。以下命令作用於編輯器而非活動文件。 除非註明其他引數,否則所有應用程式物件命令都必須使用下列格式呼叫:

UltraEdit.commandName();

下表說明了應用程式物件命令:

命令

引數*

說明

clearClipboard

清除活動的剪貼簿。

clipboardContent

** 這是隻讀屬性。

返回當前剪貼簿內容。例如:

var clip = UltraEdit.clipboardContent;

clipboardIdx

** 這是隻讀屬性。

返回當前剪貼簿的索引。例如:

var clip = UltraEdit.clipboardIdx;

closeFile

檔案路徑

儲存模式

0 - 提示儲存

1 - 儲存並關閉

2 - 關閉不儲存

關閉活動的檔案。例如:

UltraEdit.closeFile("C:\\temp\\test.txt",2);

*注意:在引數中使用的任何反斜線必須按以上顯示進行換碼(即使用“\\”而非“\”)。

columnMode

** 這是隻讀屬性。

返回布林值說明列模式是否活動。例如:

var columnActive = UltraEdit.columnMode;

columnModeOff

關閉列模式。例如:

UltraEdit.columnModeOff();

*注意:指令碼處理完成後當前列模式狀態將恢復。

columnModeOn

開啟列模式。例如:

UltraEdit.columnModeOn();

decryptFilePrompt

顯示解密檔案對話方塊。 例如:

UltraEdit.decryptFilePrompt();

encryptFilePrompt

顯示加密檔案對話方塊。 例如:

UltraEdit.encryptFilePrompt();

frInFiles

.directoryStart 字串 搜尋開始的
完整路徑
.filesToSearch 整數 值:
0 - 列出的檔案
1 - 開啟的檔案
2 - 收藏的檔案
3 - 專案檔案
4 - 解決方案檔案
.matchCase 布林值 true/false
.matchWord 布林值 true/false
.regExp 布林值 true/false
.searchSubs 布林值 true/false
.unicodeSearch 布林值 true/false
.searchInFilesTypes 字串 搜尋的檔案/型別
範圍
.find ("要搜尋的字串");
.replace ("要搜尋的字串", "替換字串");

** 僅在替換中使用 **
.logChanges 布林值 true/false
.preserveCase 布林值 true/false

** 僅無法在替換中使用 **
.useOutputWindow 布林值 true/false

在指定的檔案中搜索,基於指定的引數查詢引號 "" 中的字串。

在檔案中查詢示例:

UltraEdit.frInFiles.directoryStart = "c:\\temp\\";

UltraEdit.frInFiles.searchInFilesTypes = "*.txt";

UltraEdit.frInFiles.useOutputWindow = true;

UltraEdit.frInFiles.find("3939");

在檔案中替換示例:

UltraEdit.frInFiles.directoryStart = "c:\\temp\\";

UltraEdit.frInFiles.searchInFilesTypes = "*.txt";

UltraEdit.frInFiles.useOutputWindow = true;

UltraEdit.frInFiles.replace("3939", "7878");

getString

在提示對話方塊中使用的引號 ("") 中的字串

可選引數:

0 int

1 int 返回值

提示使用者在當前位置插入的字串。 “提示”是指指令碼執行時顯示給使用者的提示或問題。例如:

UltraEdit.getString("What is your name?");

var str = UltraEdit.getString("What is your name?",1);

如果使用 int 值“1”,則輸入的字串將不會寫入活動檔案,但會另存為變數值並在執行的指令碼中使用。

getValue

在提示對話方塊中使用的引號 ("") 中的字串

可選引數:

0 int

1 int 返回值

提示使用者在當前位置插入的值。 “提示”是指指令碼執行時顯示給使用者的提示或問題。例如:

UltraEdit.getValue("How old are you?");

var str = UltraEdit.getValue("How old are you?",1);

如果使用 int 值“1”,則輸入的字串將不會寫入活動檔案,但會另存為變數 int 值並在執行的指令碼中使用。

insertMode

更改文字編輯模式中的字元輸入為插入模式。

insOvrMode

** 這是隻讀屬性。

返回布林值說明插入模式是否開啟。例如:

var insertActive = UltraEdit.insOvrMode;

messageBox

訊息文字位於引號 ("") 中

標題文字位於引號 ("") 中(可選)

顯示帶有“確定”按鈕的訊息對話方塊。例如:

UltraEdit.messageBox("Can't complete process", "Process Abort");

newFile

開啟新的空白檔案。

open

檔名在引號("")中

開啟指定的檔案。檔名必須在引號中。可以使用“^c”且 UltraEdit 會將其替換為剪貼簿中的內容。例如:

UltraEdit.open("c:\\temp\\test.txt");

UltraEdit.open('^c');

UltraEdit.open("c:\\temp\\^c");

UltraEdit.open("FTP::myserver.com\\/home/mypath/

public_html|index.html");

overStrikeMode

將文字編輯模式更改為輸入字元的改寫模式。

perlReOn

將正則表示式切換為符合 Perl 樣式的正則表示式。

regexMode

** 這是隻讀屬性。

返回數值表示活動的正則表示式型別。

0 = UltraEdit 表示式

1 = Unix 表示式

2 = Perl 表示式

例如:

var regexType = UltraEdit.regexMode;

runTool

引號 ("") 中的字元指定要執行的工具的區分大小寫的選單名。

執行一個工具。該工具必須從高階選單中的工具配置進行配置。例如:

UltraEdit.runTool("Script Tool");

save

儲存活動檔案

saveAll

儲存所有活動檔案

saveAs

檔名在引號("")中

將活動檔案用指定的檔名儲存。檔名必須在引號中。檔名中可以使用“^s”。UltraEdit 將其取代為活動視窗中當前選中的文字。同樣可以使用“^c”且 UltraEdit 會將其替換為剪貼簿中的內容。

UltraEdit.saveAs("c:\\temp\\test.txt");

UltraEdit.saveAs("^s");

UltraEdit.saveAs("^c");

selectClipboard

剪貼簿號碼 (0-9)

選擇指定的剪貼簿 0 = Windows 剪貼簿,1-9 表示使用者剪貼簿。例如:

UltraEdit.selectClipboard(2);

ueReOn

將正則表示式切換為 UltraEdit 樣式的正則表示式。

unixReOn

將正則表示式切換為 Unix 樣式的正則表示式。

文件物件命令

document 是 JavaScript 陣列物件,陣列物件是UltraEdit 應用程式物件的屬性。 這是所有當前同時開啟文件的陣列。activeDocument 引數可以用來指定要寫入活動檔案的輸出,或者使用者可以根據檔案選項卡順序指定檔案的索引(即文件 [0], ... 文件 [8])。 例如:

UltraEdit.activeDocument.write("test");

將“test”寫入當前文件,同時以下:

UltraEdit.document[4].write("test");

將允許使用者開啟多個檔案並將指定的文字寫入開啟待編輯的第五個檔案(根據檔案標籤的順序)。

指令碼中可以使用“//”進行註釋,用於測試和文件。

指令碼一旦建立後便可以編輯。請注意,“^c”和“^s”可能在很多指令碼中應用,使用時將取代剪貼簿中的內容(^c)和當前選中的內容(^s)。這允許使用者建立引用特定字串的指令碼,並將字串用 ^c 或 ^s 取代,以便在指令碼執行時動態地“指定”字串。以下命令作用於當前開啟的文件進行編輯。 除非註明其他引數,否則所有文件物件命令都必須使用下列格式呼叫:

UltraEdit.activeDocument.commandName();

下表說明了文件物件命令:

命令

引數*

說明

ansiToOem

將檔案從 ANSI 轉換為 OEM。例如:

UltraEdit.activeDocument.ansiToOem();

ASCIIToUnicode

轉換 ASCII 檔案到 Unicode

ASCIIToUTF8

轉換 ASCII 檔案到 UTF-8

bottom

跳轉到檔案結尾。

cancelSelect

清除活動文件中的任何選擇。示例: UltraEdit.activeDocument.cancelSelect();

clearAllBookmarks

清除活動文件中的所有書籤。例如:

UltraEdit.activeDocument.clearAllBookmarks();

codePage

** 這是一個活動/指定檔案的屬性。

回傳活動檔案的頁碼值。例如:

var cp = UltraEdit.activeDocument.codePage;

可用來設定活動檔案要使用的頁碼。例如:

UltraEdit.open("C:\\temp\\korean_file.txt")

UltraEdit.activeDocument.codePage = 949;

collapseAll

摺疊活動檔案中所有可摺疊的文字。 例如:

UltraEdit.activeDocument.collapseAll();

columnCenterJustify

將選中的列居中調整。

columnCut

要剪下的列編號數值

在列模式中剪下選中的列或從當前游標位置到檔案末尾的指定數量的列。要剪下選中的列必須使用值“0”。

columnDelete

要刪除的列編號數值

在列模式中刪除選中的列或從當前游標位置到檔案末尾的指定數量的列。要刪除選中的列必須使用值“0”。

columnInsert

字串位於引號 ("") 中

將引號中的字串插入選中的列。

columnInsertNum

起始數字 整數
增量 整數
列首補零 布林值 true/false
十六進位制 布林值 true/false

將數字插入選中的列。 如果沒有選中的內容,則插入將從游標位置移至檔案的最後一行。例如:

UltraEdit.activeDocument.columnInsertNum(2, 3 , false, true);

columnLeftJustify

將選中的列居左調整。

columnRightJustify

將選中的列居右調整。

copy

將選中的文字複製到剪貼簿。如果沒有選中的內容,如果配置了當沒有活動的選擇時,啟用當前行復制/追加選項,當前游標位置所在的行將被複制。

copyAppend

複製選中的文字並將其追加到剪貼簿。如果沒有選中的內容,如果配置了當沒有活動的選擇時,啟用當前行復制/追加選項,當前游標位置所在的行將被複制。

copyFilePath

將活動檔案的路徑/名稱複製到剪貼簿。

currentChar

** 這是活動/指定文件的只讀屬性。

返回游標處字元的值。例如:

var char = UltraEdit.activeDocument.currentChar;

currentColumnNum

** 這是活動/指定文件的只讀屬性。

返回當前列號的值。 第一列編號為“0”。例如:

var col = UltraEdit.activeDocument.currentColumnNum;

currentLineNum

** 這是活動/指定文件的只讀屬性。

返回當前行號的值。例如:

var lineNum = UltraEdit.activeDocument.currentLineNum;

currentPos

** 這是活動/指定文件的只讀屬性。

返回值為當前位置到檔案開頭的位元組數。例如:

var pos = UltraEdit.activeDocument.currentPos;

cut

將選中內容從檔案剪下到剪貼簿。 如果沒有選中的內容,則將剪下游標位置目前所在的行。

cutAppend

將選中內容從檔案中剪下並追加到剪貼簿。 如果沒有選中的內容,則將剪下游標位置目前所在的行。

deleteText

刪除當前字元或選中的文字。

deleteLine

刪除當前的行。

deleteToEndOfLine

將從游標位置開始刪除一直到行的結尾。

deleteToStartOfLine

將從游標位置開始刪除一直到行的開始。

dosToMac

將檔案(行終止符)轉換為 MAC 格式。

dosToUnix

將檔案(行終止符)轉換為 UNIX 格式。

dupeLine

在游標下插入活動行的複製。

encoding

** 這是一個活動/指定檔案的唯讀屬性。

回傳活動檔案的編碼值。例如:

var enc = UltraEdit.activeDocument.encoding;

endSelect

停止選擇文字(詳細資訊請參見 startSelect)。

expandAll

展開活動檔案中所有摺疊的文字。 例如:

UltraEdit.activeDocument.expandAll();

fileSize

** 這是活動/指定文件的只讀屬性。

返回引用檔案的位元組數大小。例如:

var size = UltraEdit.activeDocument.fileSize;

findReplace

.matchCase 布林值 true/false
.matchWord 布林值 true/false
.mode 整數 值:
0 - 當前檔案
1 - 在選擇中
2 - 所有開啟的檔案
.regExp 布林值 true/false
.searchAscii 布林值 true/false
.searchDown 布林值 true/false
.searchInColumns 布林值 true/false
.fromCol 整數 default: 0
.toCol 整數 default:
-1
.find ("要搜尋的字串");
.replace ("要搜尋的字串", "替換字串");

** 僅在替換中使用 **
.preserveCase 布林值 true/false
.replaceAll 布林值 true/false
.replaceInAllOpen 布林值 true/false
*在替換中取代 .mode
.selectText 布林值 true/false
*僅替換選中的文字

根據指定的引數查詢引號 "" 中的字串。例如:

UltraEdit.activeDocument.findReplace.matchWord = true;

UltraEdit.activeDocument.findReplace.find("3939");

UltraEdit.document[0].findReplace.matchWord = true;

UltraEdit.document[0].findReplace.matchCase = true;

UltraEdit.document[0].findReplace.replace("Copper", "Silver");

請注意:所有屬性一旦設定便應用於之後的所有查詢和替換,直到再次被設定為其他值。

fromEBCDIC

將文字轉換為 EBCDIC 格式。

gotoBookmark

跳轉到的書籤索引或 -1 轉到下一個書籤

跳轉到下一個/指定的書籤。索引從 0 開始。如果使用者輸入大於實際書籤數的索引,則將自動引導到第一個書籤(索引 0)。例如:

UltraEdit.activeDocument.gotoBookmark(0);

gotoBookmarkSelect

跳轉到的書籤索引或 -1 轉到下一個書籤

跳轉到下一個/指定的書籤並選擇從游標位置到書籤的文字。索引從 0 開始。如果使用者輸入大於實際書籤數的索引,則將自動引導到第一個書籤(索引 0)。例如:

UltraEdit.activeDocument.gotoBookmarkSelect(0);

gotoEndOfNextWord

跳轉到下一個詞語的尾部。示例: UltraEdit.activeDocument.gotoEndOfNextWord();

gotoEndOfNextWordSelect

跳轉到下一個詞語的尾部並選擇當前插入記號位置的所有文字。示例: UltraEdit.activeDocument.gotoEndOfNextWordSelect();

gotoEndOfPrevWord

跳轉到前一個詞語的尾部。示例: UltraEdit.activeDocument.gotoEndOfPrevWord();

gotoEndOfPrevWordSelect

跳轉到前一個詞語的尾部並選擇當前插入記號位置的所有文字。示例: UltraEdit.activeDocument.gotoEndOfPrevWordSelect();

gotoLine

要跳轉到的行和列數的數值

跳轉到指定的行和列號。使用行號 0 跳轉到當前行的指定列。例如:

UltraEdit.activeDocument.gotoLine(1,5);

gotoLineSelect

要跳轉到的行和列數的數值

跳轉到指定的行號和列號並選擇從游標位置到行/列的文字。選擇文字時使用行號 0 跳轉到當前行的指定列。例如:

UltraEdit.activeDocument.gotoLineSelect(1,5);

gotoPage

要跳轉到頁面的編號

跳轉到指定的頁號。例如:

UltraEdit.activeDocument.gotoPage(5);

gotoPageSelect

要跳轉到頁面的編號

跳轉到指定的頁號並選擇從游標位置到頁的文字。例如:

UltraEdit.activeDocument.gotoPageSelect(5);

gotoPos

數字值,以位元組數指定該位置與檔案開始處的距離

跳轉到指定位置

gotoPosSelect

數字值,以位元組數指定該位置與檔案開始處的距離

Jump to specified position (passed as parameter in number of char from beginning of file) while making a selection

hexDelete

指定要刪除的位元組數的數值

從檔案中刪除指定數量的位元組。

hexInsert

指定要插入位元組大小的數字值

將指定數量的位元組插入檔案。這將插入空格 (HEX 20)。

hexMode

** 這是活動/指定文件的只讀屬性。

返回布林值說明十六進位制模式是否活動。例如:

var hexActive = UltraEdit.activeDocument.hexMode;

hexOff

關閉十六進位制模式——切換到文字模式。

hexOn

開啟十六進位制模式。

hideOrShowLines

隱藏選中的行,或如果隱藏則顯示在游標行處隱藏的行。

insertLine

在游標當前位置的下面插入空白行。

insertPageBreak

在檔案游標目前所在位置插入換頁/分頁符。

insertTemplate

引號中是後跟點號的模板組名稱 ("glo.")(可選)
引號中的模板名稱 ("templateName")
全域性模板索引(傳統)

把指定的模板插入檔案中。通過指定模板名稱(可指定亦可不指定模板組名稱)即可插入全域性模板。例如:

UltraEdit.activeDocument.insertTemplate("userTime");

如有必要,使用者可以指定全域性 ("glo" 或 "global")、環境("env" 或 "environment")、語言("lng" 或 "language")和專案("prj" 或 "project")組以及模板名稱。例如:

UltraEdit.activeDocument.insertTemplate("glo.userTime");
UltraEdit.activeDocument.insertTemplate("global.userTime");
UltraEdit.activeDocument.insertTemplate("env.Power1");
UltraEdit.activeDocument.insertTemplate("environment.Power1");
UltraEdit.activeDocument.insertTemplate("lng.class");
UltraEdit.activeDocument.insertTemplate("language.class");
UltraEdit.activeDocument.insertTemplate("prj.noDesc");
UltraEdit.activeDocument.insertTemplate("project.noDesc");

如有必要,使用者可以根據索引指定全域性模板。例如:
UltraEdit.activeDocument.insertTemplate(0);

insertTemplate

模版索引

將指定的模版插入檔案。例如:

UltraEdit.activeDocument.insertTemplate(0);

invertCase

轉換所選文字的大小寫。

isCharGt

"字元"

檢查當前游標位置所在的字元是否大於指定的字元。例如:


if (UltraEdit.document[1].isCharGt('k')){

//do these commands...

} else {

//do these commands...

}

isChar

"字串"

檢查當前游標位置所在的字元是否為指定的字元。 例如:

if (UltraEdit.document[1].isChar('k')){

//do these commands...

} else {

//do these commands...

}

isColNum

數字

相關推薦

UltraEdit指令碼資料

        造資料可能是日常開發測試中的一項常見工作。筆者當前的專案中需要對系統中的歷史資料進行統計分析,由於專案處於初級階段,資料量比較小,所謂的“歷史”資料更是無從獲取,於是就需要根據現有的資料編造一些資料來進行功能測試。         造資料的工具可能有很多,我

Python seleniumJavascript指令碼注入解決按鈕點選問題

  前段時間,筆者忙於應付公司組織的雅思考試,白天、晚上但凡有空,筆者都是埋頭伏案,啃劍橋雅思(劍4~劍12)的官方模擬題或者做著與雅思考試相關的準備工作,這個過程持續了40余天。最近總算鼓起勇氣走進考場,跟那些尚未畢業、懷揣出國夢想的小年輕同場競爭,雖然結果還未出來,但是至少短時間不用再高強度複習英語了,筆

集算器資料

看如下圖所示報表:   這個報表從樣式來看,可以看作是一個簡單的網格式報表,統計著各種收支金額,但因為取數複雜,每個格子的資料都來自一個複雜的 sql 資料集,並且涉及十幾個,乃至幾十個資料集,藍色 區域裡每個格子都需要從各自的資料集裡檢索遍歷,查詢與左表頭關聯的記錄。為了方便體

網頁請求data引數構造及js指令碼製作簡易爬取進度

  小爬最近隨著對python中字串、json等理解進一步加深,發現先前我隨筆中提到的data構造和傳參方法略複雜,原本有更簡單的方法,Mark如下。 先前小爬我使用的requests.post請求中data構造的程式碼如下: data_search={ 'page':1, 'row

函式索引解決資料傾斜列查詢

首先宣告:本方法是受到dbsnake的指導,再次感謝指點。通常來說,索引選取的資料列最好為分散度高、選擇性好。從索引樹結構的角度看,列值都是分佈在葉節點位置。這樣,通過樹結構搜尋得到的葉節點數量效率比較高。實際中,我們常常遇到資料列值傾斜的情況。就是說,整個列資料取值有限。但

Excel批量提取資料夾中所有檔名稱

在工作中,有時候,我們需要整理資料夾中的所有檔名稱,並羅列在一張表格中。天哪,我的資料夾中有上千個檔案,要我一個個的複製貼上嗎?太麻煩了吧?今天,跟著小編一起來探索一種巧妙的方法吧,提升百倍效率哦! 1、首先我們開啟excel,點選“公式”選項卡,單擊“定義名稱”按鈕,彈出

mysql 通用資料指令碼

背景 公司研發了一個系統——基於客戶交易行為,利用演算法得出各個使用者的各式各樣的特徵,暫且稱之為“標籤”。這些“標籤”是利用大資料平臺計算而得的結果。計算得到的近三四百個“標籤“資料會會落到中臺N張表中。操作員,在管理平臺,能夠通過特定”標籤“獲取某類滿足此”標籤“的使用者,或者搜尋某

Unity C#指令碼從Web伺服器獲取、解析Json檔案資料

需要在Plugins檔案下,匯入LitJson檔案。 (LitJson檔案) 連結:https://pan.baidu.com/s/1sSEPGbUm6tn7Y8huQm5v_w 密碼:5fzr 指令碼:using System.Collections; usin

標誌欄位實現報表填報資料的暫存與鎖定

【摘要】 使用者頁面端資料錄入時,由於資料的不確定性,通常會需要將資料暫存而不真正入庫,類似草稿功能,等能確保資料準確時再進行資料入庫操作,來乾學院看看如果簡單的通過一個標誌欄位實現資料的暫存與鎖定。巧用標誌欄位實現填報資料的暫存與鎖定 需求場景 在使用者錄入完資料後,

Superset大資料分析平臺搞定各類圖表

前言 其實大資料圖表展示的這類平臺有很多,Superset是其中之一,最近有個需求對各類圖表展示的開發較多,索性將工作量交給這個平臺。 介紹 Superset的中文翻譯是快船,而Superset其實是一個自助式資料分析工具,它的主要目標是簡化我們的資料

Scala 資料指令碼,方便Spark做測試用

苦於spark 無資料可測試,於是就動手寫了些scala 程式用來造百G 或更多的資料,以方便spark sql 做測試使用,之前在某影視公司面試的面試題資料結構,我就按這個來進行造資料。結構一共6

redis點陣圖儲存億級資料與訪問 - 簡書

原文:巧用redis點陣圖儲存億級資料與訪問 - 簡書 業務背景 現有一個業務需求,需要從一批很大的使用者活躍資料(2億+)中判斷使用者是否是活躍使用者。由於此資料是基於使用者的各種行為日誌清洗才能得到,資料部門不能提供實時介面,只能提供包含使用者及是否活躍的指定格式的文字由業務方使用。

IC數字前端設計開發18 (shell指令碼編寫區別兩個資料夾內檔案的不同)

#!/bin/bash mkdir tmp basedir="./tmp" workdir="./" #這是定義兩個目錄,按照你的說法,這兩個目錄下檔名應該都是相同的 dir1="txt_test0" dir2="txt_test1" #這是用來儲存查詢di

WrapPanel為ItemsControl繫結資料

參考文章: http://www.cnblogs.com/nasa/archive/2009/08/17/wrappanel-itemscontrol.html 總結: ItemsControl和ItemsPanel和Template的區別。

Sql Server裡Case將多行顯示的資料合併為一行顯示

轉載地址:http://www.cnblogs.com/kingthy/archive/2008/04/29/1175697.html 昨晚在CSDN論壇上看到有某個人問了類似這樣的一個問題,現有三個資料表,分別是學生表,課程表,成績表。它們的結構與樣例資料如下:學生表

日誌恢復資料

SQL Server資料庫在新建的時候除了生成“資料庫名_Data.MDF”的資料檔案外,還會生成“資料庫名_LOG.LDF”檔案。當我們錯誤地刪除資料庫裡系統表的資訊導致無法正常使用或者錯誤地刪除有用資料需要回滾的時候,我們應該如何做呢?系統表的威脅比較大些,因為一旦刪除依靠SQL Server本身的企業

Excel建立幾百萬條Loadrunner引數化資料

 我們在使用loadrunner進行併發時,有時會需要我們自己來新建幾萬條甚至幾百萬條有一定規則的引數化資料。在此本人提供一個簡單、快速的方法,就是利用excel自帶的vba編譯器,不多說直接上圖:本人電腦安的excel2010,開啟檢視->巨集->編輯我們

hive使用技巧(四)——MapJoin解決資料傾斜問題

相關文章推薦: Hive的MapJoin,在Join 操作在 Map 階段完成,如果需要的資料在 Map 的過程中可以訪問到則不再需要Reduce。 小表關聯一個超大表時,容易發生資料傾斜,可以用MapJoin把小表全部載入到記憶體在map端進行join,避免r

Drawable 實現Android UI 元素間距效果

purple 固定 展示 .com otto 技巧 log contain dev 源文地址: 巧用Drawable 實現Android UI 元素間距效果 在大部分的移動UI或者Web UI都是基於網格概念而設計的。這種網格一般都是有一些對其的方塊組成,然後

task

執行 span src 定時 mage family tput isa alt task:系統任務, ? 一般用於驗證模塊,或者抽象行為描述的模塊;? 可以包含input, output 、 inout 端口定義和參數;? 可以包含時間控制(如: # delays, @,