2015-07-01 18 views
0

Я хотел бы знать, как разделить большой файл на несколько файлов на основе определенного размера файла. Я использую оператор File, так как он также будет экспортироваться в виде текстового файла с разделителями.разделить файл на несколько файлов на основе размера файла sas

Любые мысли о том, как это сделать? Заранее спасибо.

Вот код, я использовал для экспорта плоского файла в текстовый файл с разделителями:

data _null_;                                                              
     %let _EFIERR_ = 0; /* set the ERROR detection macro variable */                                               
     %let _EFIREC_ = 0; /* clear export record count macro variable */  

    file "C:\test\file..txt" delimiter=';' DSD DROPOVER lrecl=32767 ENCODING="UTF-8"; 

С записью заголовка ± 300 байт, 4MB может поместиться 7,060 записи, где каждое поле в каждой записи заполняется до максимальной длины (594 байта). Я думаю, что в первом прогоне будет загружено до 7.000 записей.

+0

Вы говорите размер файла, как в MB или в количестве строк? – Reeza

+0

Да, максимум 4 Мб на файл. –

+0

Вам нужно больше информации в вопросе. В _minimum_ включается выборка данных и выборка данных выборки данных. – Joe

ответ

0

Если вам просто нужен быстрый & грязный способ оценки безопасного предела: содержание

  • запустить прок
  • узнать длину каждой записи (хранится в формате SAS)
  • добавить запас прочности 30% для полей, которые будут длиннее при выводе в плоский файл. (например, численные значения имеют длину SAS по умолчанию, равную 8 байтам, но могут быть выписаны как 20 или более, в зависимости от того, какие форматы используются, если таковые имеются)
  • разделите 4mb на предполагаемую длину строки
  • используйте счетчик строк для chunk большой файл в выходные файлы, которые будут вписываться в ваш предел 4mb
Смежные вопросы