嗨!
當我打開一個文件時,我正在處理佔用大量計算機內存的大文件......導致我的PC遲緩,有時會掛斷。想知道是否有一個jsl解決方案,其中一個文件可以在打開之前被分成較小的文件...如File_A = 2GB,將被分成4個較小的文件,每個250MB。然後,我將自動打開和聚合/計算每個分塊文件,關閉打開的分塊文件,然後將結果連接到將要處理的下一個分塊文件....然後循環繼續。
提前致謝。
如果您不想在分割之前將表格加載到內存中,則可以根據加載數據的方式進行創作。 對於平面文件,指定要在循環內讀取的起始位置和行數:
dtProbe = Open("$SAMPLE_DATA/Probe.jmp");
dtProbe << save( "$temp/deleteme123.txt" );
for( i = 1, i <= 2, i++,
dt = Open(
"$temp/deleteme123.txt",
columns(
New Column( "security to create", Character, "Nominal" ),
New Column( "resource", Character, "Nominal" ),
New Column( "group", Character, "Nominal" ),
New Column( "(ADM V-net)", Character, "Nominal" )
),
Import Settings(
Fixed Column Widths( 19, 9, 6, 105 ),
Strip Quotes( 0 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 0 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 1 + 100 * (i - 1) ),
Lines To Read( 100 ),
Year Rule( "20xx" )
)
)
); @Nalla :
我還想補充一點,這不是唯一可以加速處理這些數據的方法。如果您要使表格“隱形”或“隱私”,那麼可以顯著加快這一過程。
dt << Show Window(0);
@Nalla :
您好,這當然可以做到。
查看腳本索引中的“子集”功能 - 這將幫助您形成大型數據表的較小子集。這是一個例子。然後,您可以使用“Concat”加入表。
// Lets start with the assumption that there are 1000 rows in dt table
// Also say you want to subset n rows in each iteration ;
LL = 1;
UL = 250 ;
for(i = 1 , i <= 4 , i ++,
LL = LL * i ;
UL = UL * i ;
dt << Select Rows(Index(LL,UL,1)); // Assuming "dt" is your master table
dt1 = dt << Subset("Private",Selected Rows(1),Selected Columns(0));<BR /> LL = UL;
);