divida um banco de dados de texto grande (xyz) em x partes iguais
Eu quero dividir um grande banco de dados de texto (~ 10 milhões de linhas). Eu posso usar um comando como
$ sed -i -e '4 s/(dB)//' -e '4 s/Best\ unit/Best_Unit/' -e '1,3 d' '/cygdrive/c/ Radio Mobile/Output/TRC_TestProcess/trc_longlands.txt'
$ split -l 1000000 /cygdrive/P/2012/Job_044_DM_Radio_Propogation/Working/FinalPropogation/TRC_Longlands/trc_longlands.txt 1
A primeira linha é limpar o banco de dados e a próxima é dividi-lo - mas os arquivos de saída não têm os nomes dos campos. Como posso incorporar os nomes dos campos em cada conjunto de dados e enviar uma lista com o arquivo original, o novo nome do arquivo e os números de linha (do arquivo original). Isso pode ser usado no modelo arcgis para reunir novamente os conjuntos de dados finais de polígonos simplificado
LTERNATIVAMENTE E MAIS ÚTIL - Como isso precisa entrar em um modelo arcgis, uma solução baseada em python é a melhor. Mais detalhes estão emhttps: //gis.stackexchange.com/questions/21420/large-point-to-polygon-by-buffer-join-buffer-dissolve-issues#comment29062_2142 eRemova linhas específicas de um arquivo de texto grande em python
SOI COM UMA SOLUÇÃO Python baseada em CYGWIN, conforme resposta de icyrock.com
we process_text.sh
cd /cygdrive/P/2012/Job_044_DM_Radio_Propogation/Working/FinalPropogation/TRC_Longlands
mkdir processing
cp trc_longlands.txt processing/trc_longlands.txt
cd txt_processing
sed -i -e '4 s/(dB)//' -e '4 s/Best\ unit/Best_Unit/' -e '1,3 d' 'trc_longlands.txt'
split -l 1000000 trc_longlands.txt trc_longlands_
cat > a
h
1
2
3
4
5
6
7
8
9
^D
split -l 3
split -l 3 a 1
mv 1aa 21aa
for i in 1*; do head -n1 21aa|cat - $i > 2$i; done
for i in 21*; do echo ---- $i; cat $i; done
how "TRC_Longlands" e o caminho podem ser substituídos pelo nome do arquivo de entrada - em python, temos% path% /% name para isso. na última linha "echo" é necessário?
e isso é chamado por python usando
import os
os.system("process_text.bat")
onde process_text.bat é basicamente
bash process_text.sh
Recebo o seguinte erro ao executar a partir dos ...
Microsoft Windows [Versão 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Todos os direitos reservados
C: \ Users \ georgec> bash P: \ 2012 \ Job_044_DM_Radio_Propogation \ Working \ FinalPropogat \ TRC_Longlands \ process_text.sh 'bash' não é reconhecido como um comando interno ou externo, programa operacional ou arquivo em lotes.
também quando executo o comando bash do cygwin -Eu recebo
georgec @ ATGIS25 / cygdrive / P / 2012 / Job_044_DM_Radio_Propogation / Working / FinalPropogation / TRC_Longlands $ bash process_text.sh: Esse arquivo ou diretório: / cygdrive / P / 2012 / Job_044_DM_Radio_Propogation / Working / FinalCopyright não pode ser encontrado `processing / trc_longlands.txt \ r ': Esse arquivo ou diretório não existe: Não existe esse arquivo ou diretório: txt_processing: Não existe esse arquivo ou diretóriods.txt
mas os arquivos são criados no diretório rai
por que existe um "." depois do nome do diretório? como eles podem receber uma extensão .txt?