Sampling data from CSV to DBF
- Eugene Lutsenko
- Posts: 1649
- Joined: Sat Feb 04, 2012 2:23 am
- Location: Russia, Southern federal district, city of Krasnodar
- Contact:
Re: Sampling data from CSV to DBF
Is there anything going on with the sample from CSV to DBF?
Re: Sampling data from CSV to DBF
Hi Eugene,
I think several months ago I sended you this sample, maybe no...
Only for inspiration, I also read text files (but no CSV, my files are with flying formatting), with milions rows, but different is , that my row lengths are max 80 characters.
I read full file to variable, then processing it as variable. Because I need detecting EOL code to find where is end of lines.
I have one database where is field p1 and after reading I decode it to fields.
If txt file is very large , about 1-2 GBytes, i divide it to small parts with about 100MBytes to prevent memory fault.
Max size file to read to variable is about 1.5GB, if exceed, program break.
You can also read file to variable by parts and this parts add to database.
For divide file to parts I use also searching EOL character in divide place, because I not read rows , and after found EOL I divide file just in this place .
Reading file to variable and then processing is more quicker than read by rows with DC_txtline.
Really I know, your application is more more complicated than my, where I work only with 10-20 fields.
Victorio
Here short example
* open file
IF ( nHandle := FOpen( infile, FO_READ ) ) == -1
oznam2("Vstupný súbor sa nedá otvoriť:",infile)
return(.F.)
ENDIF
* calculate size
velkostsuboru:=filesize(infile)
* add to variable space for size file
cSourceString := Space( velkostsuboru )
nBytes := velkostsuboru
zostatok:=velkostsuboru
* read file to cSourcestring
nSourcestring := FRead( nHandle, @cSourceString, velkostsuboru )
* add EOL, when file not ending with EOL !, this was sometime problem..., then file not process completely
if right(cSourceString,2)!=EOL
cSourceString+=EOL
endif
* cycle to read rows to DBF
DO WHILE zostatok>0
* detection EOL code for 1.st row and other rows are different
** ak prvý riadok
if lastpoziciaEOL==0
poziciaEOL:=at(EOL,cSourcestring)
pomriadok2:=substr(cSourcestring,1,poziciaEOL-1)
** ak už ďalšie načítavané riadky
else
poziciaEOL:=at(EOL,cSourcestring,lastpoziciaEOL+2)
pomriadok2:=substr(cSourcestring,lastpoziciaEOL+2,poziciaEOL-(lastpoziciaEOL+2))
endif
append blank
* add to one field which must have size of max length row in file
replace p1 with pomp1c
zostatok:=zostatok-len(pomriadok2)-2
lastpoziciaEOL:=poziciaEOL
enddo
* zatvorenie vstup.txt súboru
FClose( nHandle )
I think several months ago I sended you this sample, maybe no...
Only for inspiration, I also read text files (but no CSV, my files are with flying formatting), with milions rows, but different is , that my row lengths are max 80 characters.
I read full file to variable, then processing it as variable. Because I need detecting EOL code to find where is end of lines.
I have one database where is field p1 and after reading I decode it to fields.
If txt file is very large , about 1-2 GBytes, i divide it to small parts with about 100MBytes to prevent memory fault.
Max size file to read to variable is about 1.5GB, if exceed, program break.
You can also read file to variable by parts and this parts add to database.
For divide file to parts I use also searching EOL character in divide place, because I not read rows , and after found EOL I divide file just in this place .
Reading file to variable and then processing is more quicker than read by rows with DC_txtline.
Really I know, your application is more more complicated than my, where I work only with 10-20 fields.
Victorio
Here short example
* open file
IF ( nHandle := FOpen( infile, FO_READ ) ) == -1
oznam2("Vstupný súbor sa nedá otvoriť:",infile)
return(.F.)
ENDIF
* calculate size
velkostsuboru:=filesize(infile)
* add to variable space for size file
cSourceString := Space( velkostsuboru )
nBytes := velkostsuboru
zostatok:=velkostsuboru
* read file to cSourcestring
nSourcestring := FRead( nHandle, @cSourceString, velkostsuboru )
* add EOL, when file not ending with EOL !, this was sometime problem..., then file not process completely
if right(cSourceString,2)!=EOL
cSourceString+=EOL
endif
* cycle to read rows to DBF
DO WHILE zostatok>0
* detection EOL code for 1.st row and other rows are different
** ak prvý riadok
if lastpoziciaEOL==0
poziciaEOL:=at(EOL,cSourcestring)
pomriadok2:=substr(cSourcestring,1,poziciaEOL-1)
** ak už ďalšie načítavané riadky
else
poziciaEOL:=at(EOL,cSourcestring,lastpoziciaEOL+2)
pomriadok2:=substr(cSourcestring,lastpoziciaEOL+2,poziciaEOL-(lastpoziciaEOL+2))
endif
append blank
* add to one field which must have size of max length row in file
replace p1 with pomp1c
zostatok:=zostatok-len(pomriadok2)-2
lastpoziciaEOL:=poziciaEOL
enddo
* zatvorenie vstup.txt súboru
FClose( nHandle )
Re: Sampling data from CSV to DBF
I can't download your files.
After logging into to Kaggle, I get the following error:
This page isn’t working
If the problem continues, contact the site owner.
HTTP ERROR 400
After logging into to Kaggle, I get the following error:
This page isn’t working
If the problem continues, contact the site owner.
HTTP ERROR 400
The eXpress train is coming - and it has more cars.
- Eugene Lutsenko
- Posts: 1649
- Joined: Sat Feb 04, 2012 2:23 am
- Location: Russia, Southern federal district, city of Krasnodar
- Contact:
Re: Sampling data from CSV to DBF
Hello, Roger!
I have two problems.
The first problem: for a CSV file with a small number of fields and records, I need to enter it in dbf not entirely but only the specified fields. I know that they can be listed in APPEND FROM. But this is only possible if they are not very much. And if they are for example 5000, the names of the fields in this command is not listed. It turns out that it is necessary to read the CSV-file as a text and to choose the data for the desired fields and add them to the dbf-file. I haven't even succeeded yet. It is possible to read it in parts, as described by Victorio.
The second problem occurs because the CSV file is very large. It has about 5000 fields (4993) and more than a million lines. Its size is about 2GB. I can't create a standard language (DbCreate()) dbf file with that many fields. The command works, but the dbf file is corrupted. It may be possible to modify the standard dbf file creation tools in some way so that they work correctly with a very large number of fields. It is not possible to convert such CSV files to DBF through arrays, because it is impossible to create arrays of such dimension.
Roger! I will send you these CSV files by email
I have two problems.
The first problem: for a CSV file with a small number of fields and records, I need to enter it in dbf not entirely but only the specified fields. I know that they can be listed in APPEND FROM. But this is only possible if they are not very much. And if they are for example 5000, the names of the fields in this command is not listed. It turns out that it is necessary to read the CSV-file as a text and to choose the data for the desired fields and add them to the dbf-file. I haven't even succeeded yet. It is possible to read it in parts, as described by Victorio.
The second problem occurs because the CSV file is very large. It has about 5000 fields (4993) and more than a million lines. Its size is about 2GB. I can't create a standard language (DbCreate()) dbf file with that many fields. The command works, but the dbf file is corrupted. It may be possible to modify the standard dbf file creation tools in some way so that they work correctly with a very large number of fields. It is not possible to convert such CSV files to DBF through arrays, because it is impossible to create arrays of such dimension.
Roger! I will send you these CSV files by email
Last edited by Eugene Lutsenko on Mon Jun 25, 2018 1:33 pm, edited 1 time in total.
Re: Sampling data from CSV to DBF
I think that both of your problems can be solved.
I will need your CSV files and also your Empty DBF files.
I will need your CSV files and also your Empty DBF files.
The eXpress train is coming - and it has more cars.
- Eugene Lutsenko
- Posts: 1649
- Joined: Sat Feb 04, 2012 2:23 am
- Location: Russia, Southern federal district, city of Krasnodar
- Contact:
Re: Sampling data from CSV to DBF
Now I will send incorrect dbf. which is obtained when you try to create a standard means dbf file with the number of fields 4993rdonnay wrote:I think that both of your problems can be solved.
I will need your CSV files and also your Empty DBF files.
- Eugene Lutsenko
- Posts: 1649
- Joined: Sat Feb 04, 2012 2:23 am
- Location: Russia, Southern federal district, city of Krasnodar
- Contact:
Re: Sampling data from CSV to DBF
An attempt to create a database with 4993 fields. The field names and sizes are shortened, but that doesn't work:
[/size]
Code: Select all
* Структура базы данных N°=23: Inp_data.dbf
* ============================================================================
* | N | Имя поля | Тип | Ширина | Дес. | Примечание |
* ============================================================================
* | 1 | ID | C | 30 | 0 |
* | 2 | TARGET | N | 15 | 1 |
* | 3 | N3 | N | 7 | 1 |
* | 4 | N4 | N | 7 | 1 |
* | 5 | N5 | N | 7 | 1 |
* | 6 | N6 | N | 7 | 1 |
* | 7 | N7 | N | 7 | 1 |
* | 8 | N8 | N | 7 | 1 |
* | 9 | N9 | N | 7 | 1 |
* | 10 | N10 | N | 7 | 1 |
* | 11 | N11 | N | 7 | 1 |
* | 12 | N12 | N | 7 | 1 |
* | 13 | N13 | N | 7 | 1 |
* | 14 | N14 | N | 7 | 1 |
* | 15 | N15 | N | 7 | 1 |
* | 16 | N16 | N | 7 | 1 |
* | 17 | N17 | N | 7 | 1 |
* | 18 | N18 | N | 7 | 1 |
* | 19 | N19 | N | 7 | 1 |
* | 20 | N20 | N | 7 | 1 |
* | 21 | N21 | N | 7 | 1 |
* | 22 | N22 | N | 7 | 1 |
* | 23 | N23 | N | 7 | 1 |
* | 24 | N24 | N | 7 | 1 |
* | 25 | N25 | N | 7 | 1 |
* | 26 | N26 | N | 7 | 1 |
* | 27 | N27 | N | 7 | 1 |
* | 28 | N28 | N | 7 | 1 |
* | 29 | N29 | N | 7 | 1 |
* | 30 | N30 | N | 7 | 1 |
* | 31 | N31 | N | 7 | 1 |
* | 32 | N32 | N | 7 | 1 |
* | 33 | N33 | N | 7 | 1 |
* | 34 | N34 | N | 7 | 1 |
* | 35 | N35 | N | 7 | 1 |
* | 36 | N36 | N | 7 | 1 |
* | 37 | N37 | N | 7 | 1 |
* | 38 | N38 | N | 7 | 1 |
* | 39 | N39 | N | 7 | 1 |
* | 40 | N40 | N | 7 | 1 |
* | 41 | N41 | N | 7 | 1 |
* | 42 | N42 | N | 7 | 1 |
* | 43 | N43 | N | 7 | 1 |
* | 44 | N44 | N | 7 | 1 |
* | 45 | N45 | N | 7 | 1 |
* | 46 | N46 | N | 7 | 1 |
* | 47 | N47 | N | 7 | 1 |
* | 48 | N48 | N | 7 | 1 |
* | 49 | N49 | N | 7 | 1 |
* | 50 | N50 | N | 7 | 1 |
* | 51 | N51 | N | 7 | 1 |
* | 52 | N52 | N | 7 | 1 |
* | 53 | N53 | N | 7 | 1 |
* | 54 | N54 | N | 7 | 1 |
* | 55 | N55 | N | 7 | 1 |
* | 56 | N56 | N | 7 | 1 |
* | 57 | N57 | N | 7 | 1 |
* | 58 | N58 | N | 7 | 1 |
* | 59 | N59 | N | 7 | 1 |
* | 60 | N60 | N | 7 | 1 |
* | 61 | N61 | N | 7 | 1 |
* | 62 | N62 | N | 7 | 1 |
* | 63 | N63 | N | 7 | 1 |
* | 64 | N64 | N | 7 | 1 |
* | 65 | N65 | N | 7 | 1 |
* | 66 | N66 | N | 7 | 1 |
* | 67 | N67 | N | 7 | 1 |
* | 68 | N68 | N | 7 | 1 |
* | 69 | N69 | N | 7 | 1 |
* | 70 | N70 | N | 7 | 1 |
* | 71 | N71 | N | 7 | 1 |
* | 72 | N72 | N | 7 | 1 |
* | 73 | N73 | N | 7 | 1 |
* | 74 | N74 | N | 7 | 1 |
* | 75 | N75 | N | 7 | 1 |
* | 76 | N76 | N | 7 | 1 |
* | 77 | N77 | N | 7 | 1 |
* | 78 | N78 | N | 7 | 1 |
* | 79 | N79 | N | 7 | 1 |
* | 80 | N80 | N | 7 | 1 |
* | 81 | N81 | N | 7 | 1 |
* | 82 | N82 | N | 7 | 1 |
* | 83 | N83 | N | 7 | 1 |
* | 84 | N84 | N | 7 | 1 |
* | 85 | N85 | N | 7 | 1 |
* | 86 | N86 | N | 7 | 1 |
* | 87 | N87 | N | 7 | 1 |
* | 88 | N88 | N | 7 | 1 |
* | 89 | N89 | N | 7 | 1 |
* | 90 | N90 | N | 7 | 1 |
* | 91 | N91 | N | 7 | 1 |
* | 92 | N92 | N | 7 | 1 |
* | 93 | N93 | N | 7 | 1 |
* | 94 | N94 | N | 7 | 1 |
* | 95 | N95 | N | 7 | 1 |
* | 96 | N96 | N | 7 | 1 |
* | 97 | N97 | N | 7 | 1 |
* | 98 | N98 | N | 7 | 1 |
* | 99 | N99 | N | 7 | 1 |
* | 100 | N100 | N | 7 | 1 |
* | 101 | N101 | N | 7 | 1 |
* | 102 | N102 | N | 7 | 1 |
* | 103 | N103 | N | 7 | 1 |
* | 104 | N104 | N | 7 | 1 |
* | 105 | N105 | N | 7 | 1 |
* | 106 | N106 | N | 7 | 1 |
* | 107 | N107 | N | 7 | 1 |
* | 108 | N108 | N | 7 | 1 |
* | 109 | N109 | N | 7 | 1 |
* | 110 | N110 | N | 7 | 1 |
* | 111 | N111 | N | 7 | 1 |
* | 112 | N112 | N | 7 | 1 |
* | 113 | N113 | N | 7 | 1 |
* | 114 | N114 | N | 7 | 1 |
* | 115 | N115 | N | 7 | 1 |
* | 116 | N116 | N | 7 | 1 |
* | 117 | N117 | N | 7 | 1 |
* | 118 | N118 | N | 7 | 1 |
* | 119 | N119 | N | 7 | 1 |
* | 120 | N120 | N | 7 | 1 |
* | 121 | N121 | N | 7 | 1 |
* | 122 | N122 | N | 7 | 1 |
* | 123 | N123 | N | 7 | 1 |
* | 124 | N124 | N | 7 | 1 |
* | 125 | N125 | N | 7 | 1 |
* | 126 | N126 | N | 7 | 1 |
* | 127 | N127 | N | 7 | 1 |
* | 128 | N128 | N | 7 | 1 |
* | 129 | N129 | N | 7 | 1 |
* | 130 | N130 | N | 7 | 1 |
* | 131 | N131 | N | 7 | 1 |
* | 132 | N132 | N | 7 | 1 |
* | 133 | N133 | N | 7 | 1 |
* | 134 | N134 | N | 7 | 1 |
* | 135 | N135 | N | 7 | 1 |
* | 136 | N136 | N | 7 | 1 |
* | 137 | N137 | N | 7 | 1 |
* | 138 | N138 | N | 7 | 1 |
* | 139 | N139 | N | 7 | 1 |
* | 140 | N140 | N | 7 | 1 |
* | 141 | N141 | N | 7 | 1 |
* | 142 | N142 | N | 7 | 1 |
* | 143 | N143 | N | 7 | 1 |
* | 144 | N144 | N | 7 | 1 |
* | 145 | N145 | N | 7 | 1 |
* | 146 | N146 | N | 7 | 1 |
* | 147 | N147 | N | 7 | 1 |
* | 148 | N148 | N | 7 | 1 |
* | 149 | N149 | N | 7 | 1 |
* | 150 | N150 | N | 7 | 1 |
* | 151 | N151 | N | 7 | 1 |
* | 152 | N152 | N | 7 | 1 |
* | 153 | N153 | N | 7 | 1 |
* | 154 | N154 | N | 7 | 1 |
* | 155 | N155 | N | 7 | 1 |
* | 156 | N156 | N | 7 | 1 |
* | 157 | N157 | N | 7 | 1 |
* | 158 | N158 | N | 7 | 1 |
* | 159 | N159 | N | 7 | 1 |
* | 160 | N160 | N | 7 | 1 |
* | 161 | N161 | N | 7 | 1 |
* | 162 | N162 | N | 7 | 1 |
* | 163 | N163 | N | 7 | 1 |
* | 164 | N164 | N | 7 | 1 |
* | 165 | N165 | N | 7 | 1 |
* | 166 | N166 | N | 7 | 1 |
* | 167 | N167 | N | 7 | 1 |
* | 168 | N168 | N | 7 | 1 |
* | 169 | N169 | N | 7 | 1 |
* | 170 | N170 | N | 7 | 1 |
* | 171 | N171 | N | 7 | 1 |
* | 172 | N172 | N | 7 | 1 |
* | 173 | N173 | N | 7 | 1 |
* | 174 | N174 | N | 7 | 1 |
* | 175 | N175 | N | 7 | 1 |
* | 176 | N176 | N | 7 | 1 |
* | 177 | N177 | N | 7 | 1 |
* | 178 | N178 | N | 7 | 1 |
* | 179 | N179 | N | 7 | 1 |
* | 180 | N180 | N | 7 | 1 |
* | 181 | N181 | N | 7 | 1 |
* | 182 | N182 | N | 7 | 1 |
* | 183 | N183 | N | 7 | 1 |
* | 184 | N184 | N | 7 | 1 |
* | 185 | N185 | N | 7 | 1 |
* | 186 | N186 | N | 7 | 1 |
* | 187 | N187 | N | 7 | 1 |
* | 188 | N188 | N | 7 | 1 |
* | 189 | N189 | N | 7 | 1 |
* | 190 | N190 | N | 7 | 1 |
* | 191 | N191 | N | 7 | 1 |
* | 192 | N192 | N | 7 | 1 |
* | 193 | N193 | N | 7 | 1 |
* | 194 | N194 | N | 7 | 1 |
* | 195 | N195 | N | 7 | 1 |
* | 196 | N196 | N | 7 | 1 |
* | 197 | N197 | N | 7 | 1 |
* | 198 | N198 | N | 7 | 1 |
* | 199 | N199 | N | 7 | 1 |
* | 200 | N200 | N | 7 | 1 |
* | 201 | N201 | N | 7 | 1 |
* | 202 | N202 | N | 7 | 1 |
* | 203 | N203 | N | 7 | 1 |
* | 204 | N204 | N | 7 | 1 |
* | 205 | N205 | N | 7 | 1 |
* | 206 | N206 | N | 7 | 1 |
* | 207 | N207 | N | 7 | 1 |
* | 208 | N208 | N | 7 | 1 |
* | 209 | N209 | N | 7 | 1 |
* | 210 | N210 | N | 7 | 1 |
* | 211 | N211 | N | 7 | 1 |
* | 212 | N212 | N | 7 | 1 |
* | 213 | N213 | N | 7 | 1 |
* | 214 | N214 | N | 7 | 1 |
* | 215 | N215 | N | 7 | 1 |
* | 216 | N216 | N | 7 | 1 |
* | 217 | N217 | N | 7 | 1 |
* | 218 | N218 | N | 7 | 1 |
* | 219 | N219 | N | 7 | 1 |
* | 220 | N220 | N | 7 | 1 |
* | 221 | N221 | N | 7 | 1 |
* | 222 | N222 | N | 7 | 1 |
* | 223 | N223 | N | 7 | 1 |
* | 224 | N224 | N | 7 | 1 |
* | 225 | N225 | N | 7 | 1 |
* | 226 | N226 | N | 7 | 1 |
* | 227 | N227 | N | 7 | 1 |
* | 228 | N228 | N | 7 | 1 |
* | 229 | N229 | N | 7 | 1 |
* | 230 | N230 | N | 7 | 1 |
* | 231 | N231 | N | 7 | 1 |
* | 232 | N232 | N | 7 | 1 |
* | 233 | N233 | N | 7 | 1 |
* | 234 | N234 | N | 7 | 1 |
* | 235 | N235 | N | 7 | 1 |
* | 236 | N236 | N | 7 | 1 |
* | 237 | N237 | N | 7 | 1 |
* | 238 | N238 | N | 7 | 1 |
* | 239 | N239 | N | 7 | 1 |
* | 240 | N240 | N | 7 | 1 |
* | 241 | N241 | N | 7 | 1 |
* | 242 | N242 | N | 7 | 1 |
* | 243 | N243 | N | 7 | 1 |
* | 244 | N244 | N | 7 | 1 |
* | 245 | N245 | N | 7 | 1 |
* | 246 | N246 | N | 7 | 1 |
* | 247 | N247 | N | 7 | 1 |
* | 248 | N248 | N | 7 | 1 |
* | 249 | N249 | N | 7 | 1 |
* | 250 | N250 | N | 7 | 1 |
* | 251 | N251 | N | 7 | 1 |
* | 252 | N252 | N | 7 | 1 |
* | 253 | N253 | N | 7 | 1 |
* | 254 | N254 | N | 7 | 1 |
* | 255 | N255 | N | 7 | 1 |
* | 256 | N256 | N | 7 | 1 |
* | 257 | N257 | N | 7 | 1 |
* | 258 | N258 | N | 7 | 1 |
* | 259 | N259 | N | 7 | 1 |
* | 260 | N260 | N | 7 | 1 |
* | 261 | N261 | N | 7 | 1 |
* | 262 | N262 | N | 7 | 1 |
* | 263 | N263 | N | 7 | 1 |
* | 264 | N264 | N | 7 | 1 |
* | 265 | N265 | N | 7 | 1 |
* | 266 | N266 | N | 7 | 1 |
* | 267 | N267 | N | 7 | 1 |
* | 268 | N268 | N | 7 | 1 |
* | 269 | N269 | N | 7 | 1 |
* | 270 | N270 | N | 7 | 1 |
* | 271 | N271 | N | 7 | 1 |
* | 272 | N272 | N | 7 | 1 |
* | 273 | N273 | N | 7 | 1 |
* | 274 | N274 | N | 7 | 1 |
* | 275 | N275 | N | 7 | 1 |
* | 276 | N276 | N | 7 | 1 |
* | 277 | N277 | N | 7 | 1 |
* | 278 | N278 | N | 7 | 1 |
* | 279 | N279 | N | 7 | 1 |
* | 280 | N280 | N | 7 | 1 |
* | 281 | N281 | N | 7 | 1 |
* | 282 | N282 | N | 7 | 1 |
* | 283 | N283 | N | 7 | 1 |
* | 284 | N284 | N | 7 | 1 |
* | 285 | N285 | N | 7 | 1 |
* | 286 | N286 | N | 7 | 1 |
* | 287 | N287 | N | 7 | 1 |
* | 288 | N288 | N | 7 | 1 |
* | 289 | N289 | N | 7 | 1 |
* | 290 | N290 | N | 7 | 1 |
* | 291 | N291 | N | 7 | 1 |
* | 292 | N292 | N | 7 | 1 |
* | 293 | N293 | N | 7 | 1 |
* | 294 | N294 | N | 7 | 1 |
* | 295 | N295 | N | 7 | 1 |
* | 296 | N296 | N | 7 | 1 |
* | 297 | N297 | N | 7 | 1 |
* | 298 | N298 | N | 7 | 1 |
* | 299 | N299 | N | 7 | 1 |
* | 300 | N300 | N | 7 | 1 |
* | 301 | N301 | N | 7 | 1 |
* | 302 | N302 | N | 7 | 1 |
* | 303 | N303 | N | 7 | 1 |
* | 304 | N304 | N | 7 | 1 |
* | 305 | N305 | N | 7 | 1 |
* | 306 | N306 | N | 7 | 1 |
* | 307 | N307 | N | 7 | 1 |
* | 308 | N308 | N | 7 | 1 |
* | 309 | N309 | N | 7 | 1 |
* | 310 | N310 | N | 7 | 1 |
* | 311 | N311 | N | 7 | 1 |
* | 312 | N312 | N | 7 | 1 |
* | 313 | N313 | N | 7 | 1 |
* | 314 | N314 | N | 7 | 1 |
* | 315 | N315 | N | 7 | 1 |
* | 316 | N316 | N | 7 | 1 |
* | 317 | N317 | N | 7 | 1 |
* | 318 | N318 | N | 7 | 1 |
* | 319 | N319 | N | 7 | 1 |
* | 320 | N320 | N | 7 | 1 |
* | 321 | N321 | N | 7 | 1 |
* | 322 | N322 | N | 7 | 1 |
* | 323 | N323 | N | 7 | 1 |
* | 324 | N324 | N | 7 | 1 |
* | 325 | N325 | N | 7 | 1 |
* | 326 | N326 | N | 7 | 1 |
* | 327 | N327 | N | 7 | 1 |
* | 328 | N328 | N | 7 | 1 |
* | 329 | N329 | N | 7 | 1 |
* | 330 | N330 | N | 7 | 1 |
* | 331 | N331 | N | 7 | 1 |
* | 332 | N332 | N | 7 | 1 |
* | 333 | N333 | N | 7 | 1 |
* | 334 | N334 | N | 7 | 1 |
* | 335 | N335 | N | 7 | 1 |
* | 336 | N336 | N | 7 | 1 |
* | 337 | N337 | N | 7 | 1 |
* | 338 | N338 | N | 7 | 1 |
* | 339 | N339 | N | 7 | 1 |
* | 340 | N340 | N | 7 | 1 |
* | 341 | N341 | N | 7 | 1 |
* | 342 | N342 | N | 7 | 1 |
* | 343 | N343 | N | 7 | 1 |
* | 344 | N344 | N | 7 | 1 |
* | 345 | N345 | N | 7 | 1 |
* | 346 | N346 | N | 7 | 1 |
* | 347 | N347 | N | 7 | 1 |
* | 348 | N348 | N | 7 | 1 |
* | 349 | N349 | N | 7 | 1 |
* | 350 | N350 | N | 7 | 1 |
* | 351 | N351 | N | 7 | 1 |
* | 352 | N352 | N | 7 | 1 |
* | 353 | N353 | N | 7 | 1 |
* | 354 | N354 | N | 7 | 1 |
* | 355 | N355 | N | 7 | 1 |
* | 356 | N356 | N | 7 | 1 |
* | 357 | N357 | N | 7 | 1 |
* | 358 | N358 | N | 7 | 1 |
* | 359 | N359 | N | 7 | 1 |
* | 360 | N360 | N | 7 | 1 |
* | 361 | N361 | N | 7 | 1 |
* | 362 | N362 | N | 7 | 1 |
* | 363 | N363 | N | 7 | 1 |
* | 364 | N364 | N | 7 | 1 |
* | 365 | N365 | N | 7 | 1 |
* | 366 | N366 | N | 7 | 1 |
* | 367 | N367 | N | 7 | 1 |
* | 368 | N368 | N | 7 | 1 |
* | 369 | N369 | N | 7 | 1 |
* | 370 | N370 | N | 7 | 1 |
* | 371 | N371 | N | 7 | 1 |
* | 372 | N372 | N | 7 | 1 |
* | 373 | N373 | N | 7 | 1 |
* | 374 | N374 | N | 7 | 1 |
* | 375 | N375 | N | 7 | 1 |
* | 376 | N376 | N | 7 | 1 |
* | 377 | N377 | N | 7 | 1 |
* | 378 | N378 | N | 7 | 1 |
* | 379 | N379 | N | 7 | 1 |
* | 380 | N380 | N | 7 | 1 |
* | 381 | N381 | N | 7 | 1 |
* | 382 | N382 | N | 7 | 1 |
* | 383 | N383 | N | 7 | 1 |
* | 384 | N384 | N | 7 | 1 |
* | 385 | N385 | N | 7 | 1 |
* | 386 | N386 | N | 7 | 1 |
* | 387 | N387 | N | 7 | 1 |
* | 388 | N388 | N | 7 | 1 |
* | 389 | N389 | N | 7 | 1 |
* | 390 | N390 | N | 7 | 1 |
* | 391 | N391 | N | 7 | 1 |
* | 392 | N392 | N | 7 | 1 |
* | 393 | N393 | N | 7 | 1 |
* | 394 | N394 | N | 7 | 1 |
* | 395 | N395 | N | 7 | 1 |
* | 396 | N396 | N | 7 | 1 |
* | 397 | N397 | N | 7 | 1 |
* | 398 | N398 | N | 7 | 1 |
* | 399 | N399 | N | 7 | 1 |
* | 400 | N400 | N | 7 | 1 |
* | 401 | N401 | N | 7 | 1 |
* | 402 | N402 | N | 7 | 1 |
* | 403 | N403 | N | 7 | 1 |
* | 404 | N404 | N | 7 | 1 |
* | 405 | N405 | N | 7 | 1 |
* | 406 | N406 | N | 7 | 1 |
* | 407 | N407 | N | 7 | 1 |
* | 408 | N408 | N | 7 | 1 |
* | 409 | N409 | N | 7 | 1 |
* | 410 | N410 | N | 7 | 1 |
* | 411 | N411 | N | 7 | 1 |
* | 412 | N412 | N | 7 | 1 |
* | 413 | N413 | N | 7 | 1 |
* | 414 | N414 | N | 7 | 1 |
* | 415 | N415 | N | 7 | 1 |
* | 416 | N416 | N | 7 | 1 |
* | 417 | N417 | N | 7 | 1 |
* | 418 | N418 | N | 7 | 1 |
* | 419 | N419 | N | 7 | 1 |
* | 420 | N420 | N | 7 | 1 |
* | 421 | N421 | N | 7 | 1 |
* | 422 | N422 | N | 7 | 1 |
* | 423 | N423 | N | 7 | 1 |
* | 424 | N424 | N | 7 | 1 |
* | 425 | N425 | N | 7 | 1 |
* | 426 | N426 | N | 7 | 1 |
* | 427 | N427 | N | 7 | 1 |
* | 428 | N428 | N | 7 | 1 |
* | 429 | N429 | N | 7 | 1 |
* | 430 | N430 | N | 7 | 1 |
* | 431 | N431 | N | 7 | 1 |
* | 432 | N432 | N | 7 | 1 |
* | 433 | N433 | N | 7 | 1 |
* | 434 | N434 | N | 7 | 1 |
* | 435 | N435 | N | 7 | 1 |
* | 436 | N436 | N | 7 | 1 |
* | 437 | N437 | N | 7 | 1 |
* | 438 | N438 | N | 7 | 1 |
* | 439 | N439 | N | 7 | 1 |
* | 440 | N440 | N | 7 | 1 |
* | 441 | N441 | N | 7 | 1 |
* | 442 | N442 | N | 7 | 1 |
* | 443 | N443 | N | 7 | 1 |
* | 444 | N444 | N | 7 | 1 |
* | 445 | N445 | N | 7 | 1 |
* | 446 | N446 | N | 7 | 1 |
* | 447 | N447 | N | 7 | 1 |
* | 448 | N448 | N | 7 | 1 |
* | 449 | N449 | N | 7 | 1 |
* | 450 | N450 | N | 7 | 1 |
* | 451 | N451 | N | 7 | 1 |
* | 452 | N452 | N | 7 | 1 |
* | 453 | N453 | N | 7 | 1 |
* | 454 | N454 | N | 7 | 1 |
* | 455 | N455 | N | 7 | 1 |
* | 456 | N456 | N | 7 | 1 |
* | 457 | N457 | N | 7 | 1 |
* | 458 | N458 | N | 7 | 1 |
* | 459 | N459 | N | 7 | 1 |
* | 460 | N460 | N | 7 | 1 |
* | 461 | N461 | N | 7 | 1 |
* | 462 | N462 | N | 7 | 1 |
* | 463 | N463 | N | 7 | 1 |
* | 464 | N464 | N | 7 | 1 |
* | 465 | N465 | N | 7 | 1 |
* | 466 | N466 | N | 7 | 1 |
* | 467 | N467 | N | 7 | 1 |
* | 468 | N468 | N | 7 | 1 |
* | 469 | N469 | N | 7 | 1 |
* | 470 | N470 | N | 7 | 1 |
* | 471 | N471 | N | 7 | 1 |
* | 472 | N472 | N | 7 | 1 |
* | 473 | N473 | N | 7 | 1 |
* | 474 | N474 | N | 7 | 1 |
* | 475 | N475 | N | 7 | 1 |
* | 476 | N476 | N | 7 | 1 |
* | 477 | N477 | N | 7 | 1 |
* | 478 | N478 | N | 7 | 1 |
* | 479 | N479 | N | 7 | 1 |
* | 480 | N480 | N | 7 | 1 |
* | 481 | N481 | N | 7 | 1 |
* | 482 | N482 | N | 7 | 1 |
* | 483 | N483 | N | 7 | 1 |
* | 484 | N484 | N | 7 | 1 |
* | 485 | N485 | N | 7 | 1 |
* | 486 | N486 | N | 7 | 1 |
* | 487 | N487 | N | 7 | 1 |
* | 488 | N488 | N | 7 | 1 |
* | 489 | N489 | N | 7 | 1 |
* | 490 | N490 | N | 7 | 1 |
* | 491 | N491 | N | 7 | 1 |
* | 492 | N492 | N | 7 | 1 |
* | 493 | N493 | N | 7 | 1 |
* | 494 | N494 | N | 7 | 1 |
* | 495 | N495 | N | 7 | 1 |
* | 496 | N496 | N | 7 | 1 |
* | 497 | N497 | N | 7 | 1 |
* | 498 | N498 | N | 7 | 1 |
* | 499 | N499 | N | 7 | 1 |
* | 500 | N500 | N | 7 | 1 |
* | 501 | N501 | N | 7 | 1 |
* | 502 | N502 | N | 7 | 1 |
* | 503 | N503 | N | 7 | 1 |
* | 504 | N504 | N | 7 | 1 |
* | 505 | N505 | N | 7 | 1 |
* | 506 | N506 | N | 7 | 1 |
* | 507 | N507 | N | 7 | 1 |
* | 508 | N508 | N | 7 | 1 |
* | 509 | N509 | N | 7 | 1 |
* | 510 | N510 | N | 7 | 1 |
* | 511 | N511 | N | 7 | 1 |
* | 512 | N512 | N | 7 | 1 |
* | 513 | N513 | N | 7 | 1 |
* | 514 | N514 | N | 7 | 1 |
* | 515 | N515 | N | 7 | 1 |
* | 516 | N516 | N | 7 | 1 |
* | 517 | N517 | N | 7 | 1 |
* | 518 | N518 | N | 7 | 1 |
* | 519 | N519 | N | 7 | 1 |
* | 520 | N520 | N | 7 | 1 |
* | 521 | N521 | N | 7 | 1 |
* | 522 | N522 | N | 7 | 1 |
* | 523 | N523 | N | 7 | 1 |
* | 524 | N524 | N | 7 | 1 |
* | 525 | N525 | N | 7 | 1 |
* | 526 | N526 | N | 7 | 1 |
* | 527 | N527 | N | 7 | 1 |
* | 528 | N528 | N | 7 | 1 |
* | 529 | N529 | N | 7 | 1 |
* | 530 | N530 | N | 7 | 1 |
* | 531 | N531 | N | 7 | 1 |
* | 532 | N532 | N | 7 | 1 |
* | 533 | N533 | N | 7 | 1 |
* | 534 | N534 | N | 7 | 1 |
* | 535 | N535 | N | 7 | 1 |
* | 536 | N536 | N | 7 | 1 |
* | 537 | N537 | N | 7 | 1 |
* | 538 | N538 | N | 7 | 1 |
* | 539 | N539 | N | 7 | 1 |
* | 540 | N540 | N | 7 | 1 |
* | 541 | N541 | N | 7 | 1 |
* | 542 | N542 | N | 7 | 1 |
* | 543 | N543 | N | 7 | 1 |
* | 544 | N544 | N | 7 | 1 |
* | 545 | N545 | N | 7 | 1 |
* | 546 | N546 | N | 7 | 1 |
* | 547 | N547 | N | 7 | 1 |
* | 548 | N548 | N | 7 | 1 |
* | 549 | N549 | N | 7 | 1 |
* | 550 | N550 | N | 7 | 1 |
* | 551 | N551 | N | 7 | 1 |
* | 552 | N552 | N | 7 | 1 |
* | 553 | N553 | N | 7 | 1 |
* | 554 | N554 | N | 7 | 1 |
* | 555 | N555 | N | 7 | 1 |
* | 556 | N556 | N | 7 | 1 |
* | 557 | N557 | N | 7 | 1 |
* | 558 | N558 | N | 7 | 1 |
* | 559 | N559 | N | 7 | 1 |
* | 560 | N560 | N | 7 | 1 |
* | 561 | N561 | N | 7 | 1 |
* | 562 | N562 | N | 7 | 1 |
* | 563 | N563 | N | 7 | 1 |
* | 564 | N564 | N | 7 | 1 |
* | 565 | N565 | N | 7 | 1 |
* | 566 | N566 | N | 7 | 1 |
* | 567 | N567 | N | 7 | 1 |
* | 568 | N568 | N | 7 | 1 |
* | 569 | N569 | N | 7 | 1 |
* | 570 | N570 | N | 7 | 1 |
* | 571 | N571 | N | 7 | 1 |
* | 572 | N572 | N | 7 | 1 |
* | 573 | N573 | N | 7 | 1 |
* | 574 | N574 | N | 7 | 1 |
* | 575 | N575 | N | 7 | 1 |
* | 576 | N576 | N | 7 | 1 |
* | 577 | N577 | N | 7 | 1 |
* | 578 | N578 | N | 7 | 1 |
* | 579 | N579 | N | 7 | 1 |
* | 580 | N580 | N | 7 | 1 |
* | 581 | N581 | N | 7 | 1 |
* | 582 | N582 | N | 7 | 1 |
* | 583 | N583 | N | 7 | 1 |
* | 584 | N584 | N | 7 | 1 |
* | 585 | N585 | N | 7 | 1 |
* | 586 | N586 | N | 7 | 1 |
* | 587 | N587 | N | 7 | 1 |
* | 588 | N588 | N | 7 | 1 |
* | 589 | N589 | N | 7 | 1 |
* | 590 | N590 | N | 7 | 1 |
* | 591 | N591 | N | 7 | 1 |
* | 592 | N592 | N | 7 | 1 |
* | 593 | N593 | N | 7 | 1 |
* | 594 | N594 | N | 7 | 1 |
* | 595 | N595 | N | 7 | 1 |
* | 596 | N596 | N | 7 | 1 |
* | 597 | N597 | N | 7 | 1 |
* | 598 | N598 | N | 7 | 1 |
* | 599 | N599 | N | 7 | 1 |
* | 600 | N600 | N | 7 | 1 |
* | 601 | N601 | N | 7 | 1 |
* | 602 | N602 | N | 7 | 1 |
* | 603 | N603 | N | 7 | 1 |
* | 604 | N604 | N | 7 | 1 |
* | 605 | N605 | N | 7 | 1 |
* | 606 | N606 | N | 7 | 1 |
* | 607 | N607 | N | 7 | 1 |
* | 608 | N608 | N | 7 | 1 |
* | 609 | N609 | N | 7 | 1 |
* | 610 | N610 | N | 7 | 1 |
* | 611 | N611 | N | 7 | 1 |
* | 612 | N612 | N | 7 | 1 |
* | 613 | N613 | N | 7 | 1 |
* | 614 | N614 | N | 7 | 1 |
* | 615 | N615 | N | 7 | 1 |
* | 616 | N616 | N | 7 | 1 |
* | 617 | N617 | N | 7 | 1 |
* | 618 | N618 | N | 7 | 1 |
* | 619 | N619 | N | 7 | 1 |
* | 620 | N620 | N | 7 | 1 |
* | 621 | N621 | N | 7 | 1 |
* | 622 | N622 | N | 7 | 1 |
* | 623 | N623 | N | 7 | 1 |
* | 624 | N624 | N | 7 | 1 |
* | 625 | N625 | N | 7 | 1 |
* | 626 | N626 | N | 7 | 1 |
* | 627 | N627 | N | 7 | 1 |
* | 628 | N628 | N | 7 | 1 |
* | 629 | N629 | N | 7 | 1 |
* | 630 | N630 | N | 7 | 1 |
* | 631 | N631 | N | 7 | 1 |
* | 632 | N632 | N | 7 | 1 |
* | 633 | N633 | N | 7 | 1 |
* | 634 | N634 | N | 7 | 1 |
* | 635 | N635 | N | 7 | 1 |
* | 636 | N636 | N | 7 | 1 |
* | 637 | N637 | N | 7 | 1 |
* | 638 | N638 | N | 7 | 1 |
* | 639 | N639 | N | 7 | 1 |
* | 640 | N640 | N | 7 | 1 |
* | 641 | N641 | N | 7 | 1 |
* | 642 | N642 | N | 7 | 1 |
* | 643 | N643 | N | 7 | 1 |
* | 644 | N644 | N | 7 | 1 |
* | 645 | N645 | N | 7 | 1 |
* | 646 | N646 | N | 7 | 1 |
* | 647 | N647 | N | 7 | 1 |
* | 648 | N648 | N | 7 | 1 |
* | 649 | N649 | N | 7 | 1 |
* | 650 | N650 | N | 7 | 1 |
* | 651 | N651 | N | 7 | 1 |
* | 652 | N652 | N | 7 | 1 |
* | 653 | N653 | N | 7 | 1 |
* | 654 | N654 | N | 7 | 1 |
* | 655 | N655 | N | 7 | 1 |
* | 656 | N656 | N | 7 | 1 |
* | 657 | N657 | N | 7 | 1 |
* | 658 | N658 | N | 7 | 1 |
* | 659 | N659 | N | 7 | 1 |
* | 660 | N660 | N | 7 | 1 |
* | 661 | N661 | N | 7 | 1 |
* | 662 | N662 | N | 7 | 1 |
* | 663 | N663 | N | 7 | 1 |
* | 664 | N664 | N | 7 | 1 |
* | 665 | N665 | N | 7 | 1 |
* | 666 | N666 | N | 7 | 1 |
* | 667 | N667 | N | 7 | 1 |
* | 668 | N668 | N | 7 | 1 |
* | 669 | N669 | N | 7 | 1 |
* | 670 | N670 | N | 7 | 1 |
* | 671 | N671 | N | 7 | 1 |
* | 672 | N672 | N | 7 | 1 |
* | 673 | N673 | N | 7 | 1 |
* | 674 | N674 | N | 7 | 1 |
* | 675 | N675 | N | 7 | 1 |
* | 676 | N676 | N | 7 | 1 |
* | 677 | N677 | N | 7 | 1 |
* | 678 | N678 | N | 7 | 1 |
* | 679 | N679 | N | 7 | 1 |
* | 680 | N680 | N | 7 | 1 |
* | 681 | N681 | N | 7 | 1 |
* | 682 | N682 | N | 7 | 1 |
* | 683 | N683 | N | 7 | 1 |
* | 684 | N684 | N | 7 | 1 |
* | 685 | N685 | N | 7 | 1 |
* | 686 | N686 | N | 7 | 1 |
* | 687 | N687 | N | 7 | 1 |
* | 688 | N688 | N | 7 | 1 |
* | 689 | N689 | N | 7 | 1 |
* | 690 | N690 | N | 7 | 1 |
* | 691 | N691 | N | 7 | 1 |
* | 692 | N692 | N | 7 | 1 |
* | 693 | N693 | N | 7 | 1 |
* | 694 | N694 | N | 7 | 1 |
* | 695 | N695 | N | 7 | 1 |
* | 696 | N696 | N | 7 | 1 |
* | 697 | N697 | N | 7 | 1 |
* | 698 | N698 | N | 7 | 1 |
* | 699 | N699 | N | 7 | 1 |
* | 700 | N700 | N | 7 | 1 |
* | 701 | N701 | N | 7 | 1 |
* | 702 | N702 | N | 7 | 1 |
* | 703 | N703 | N | 7 | 1 |
* | 704 | N704 | N | 7 | 1 |
* | 705 | N705 | N | 7 | 1 |
* | 706 | N706 | N | 7 | 1 |
* | 707 | N707 | N | 7 | 1 |
* | 708 | N708 | N | 7 | 1 |
* | 709 | N709 | N | 7 | 1 |
* | 710 | N710 | N | 7 | 1 |
* | 711 | N711 | N | 7 | 1 |
* | 712 | N712 | N | 7 | 1 |
* | 713 | N713 | N | 7 | 1 |
* | 714 | N714 | N | 7 | 1 |
* | 715 | N715 | N | 7 | 1 |
* | 716 | N716 | N | 7 | 1 |
* | 717 | N717 | N | 7 | 1 |
* | 718 | N718 | N | 7 | 1 |
* | 719 | N719 | N | 7 | 1 |
* | 720 | N720 | N | 7 | 1 |
* | 721 | N721 | N | 7 | 1 |
* | 722 | N722 | N | 7 | 1 |
* | 723 | N723 | N | 7 | 1 |
* | 724 | N724 | N | 7 | 1 |
* | 725 | N725 | N | 7 | 1 |
* | 726 | N726 | N | 7 | 1 |
* | 727 | N727 | N | 7 | 1 |
* | 728 | N728 | N | 7 | 1 |
* | 729 | N729 | N | 7 | 1 |
* | 730 | N730 | N | 7 | 1 |
* | 731 | N731 | N | 7 | 1 |
* | 732 | N732 | N | 7 | 1 |
* | 733 | N733 | N | 7 | 1 |
* | 734 | N734 | N | 7 | 1 |
* | 735 | N735 | N | 7 | 1 |
* | 736 | N736 | N | 7 | 1 |
* | 737 | N737 | N | 7 | 1 |
* | 738 | N738 | N | 7 | 1 |
* | 739 | N739 | N | 7 | 1 |
* | 740 | N740 | N | 7 | 1 |
* | 741 | N741 | N | 7 | 1 |
* | 742 | N742 | N | 7 | 1 |
* | 743 | N743 | N | 7 | 1 |
* | 744 | N744 | N | 7 | 1 |
* | 745 | N745 | N | 7 | 1 |
* | 746 | N746 | N | 7 | 1 |
* | 747 | N747 | N | 7 | 1 |
* | 748 | N748 | N | 7 | 1 |
* | 749 | N749 | N | 7 | 1 |
* | 750 | N750 | N | 7 | 1 |
* | 751 | N751 | N | 7 | 1 |
* | 752 | N752 | N | 7 | 1 |
* | 753 | N753 | N | 7 | 1 |
* | 754 | N754 | N | 7 | 1 |
* | 755 | N755 | N | 7 | 1 |
* | 756 | N756 | N | 7 | 1 |
* | 757 | N757 | N | 7 | 1 |
* | 758 | N758 | N | 7 | 1 |
* | 759 | N759 | N | 7 | 1 |
* | 760 | N760 | N | 7 | 1 |
* | 761 | N761 | N | 7 | 1 |
* | 762 | N762 | N | 7 | 1 |
* | 763 | N763 | N | 7 | 1 |
* | 764 | N764 | N | 7 | 1 |
* | 765 | N765 | N | 7 | 1 |
* | 766 | N766 | N | 7 | 1 |
* | 767 | N767 | N | 7 | 1 |
* | 768 | N768 | N | 7 | 1 |
* | 769 | N769 | N | 7 | 1 |
* | 770 | N770 | N | 7 | 1 |
* | 771 | N771 | N | 7 | 1 |
* | 772 | N772 | N | 7 | 1 |
* | 773 | N773 | N | 7 | 1 |
* | 774 | N774 | N | 7 | 1 |
* | 775 | N775 | N | 7 | 1 |
* | 776 | N776 | N | 7 | 1 |
* | 777 | N777 | N | 7 | 1 |
* | 778 | N778 | N | 7 | 1 |
* | 779 | N779 | N | 7 | 1 |
* | 780 | N780 | N | 7 | 1 |
* | 781 | N781 | N | 7 | 1 |
* | 782 | N782 | N | 7 | 1 |
* | 783 | N783 | N | 7 | 1 |
* | 784 | N784 | N | 7 | 1 |
* | 785 | N785 | N | 7 | 1 |
* | 786 | N786 | N | 7 | 1 |
* | 787 | N787 | N | 7 | 1 |
* | 788 | N788 | N | 7 | 1 |
* | 789 | N789 | N | 7 | 1 |
* | 790 | N790 | N | 7 | 1 |
* | 791 | N791 | N | 7 | 1 |
* | 792 | N792 | N | 7 | 1 |
* | 793 | N793 | N | 7 | 1 |
* | 794 | N794 | N | 7 | 1 |
* | 795 | N795 | N | 7 | 1 |
* | 796 | N796 | N | 7 | 1 |
* | 797 | N797 | N | 7 | 1 |
* | 798 | N798 | N | 7 | 1 |
* | 799 | N799 | N | 7 | 1 |
* | 800 | N800 | N | 7 | 1 |
* | 801 | N801 | N | 7 | 1 |
* | 802 | N802 | N | 7 | 1 |
* | 803 | N803 | N | 7 | 1 |
* | 804 | N804 | N | 7 | 1 |
* | 805 | N805 | N | 7 | 1 |
* | 806 | N806 | N | 7 | 1 |
* | 807 | N807 | N | 7 | 1 |
* | 808 | N808 | N | 7 | 1 |
* | 809 | N809 | N | 7 | 1 |
* | 810 | N810 | N | 7 | 1 |
* | 811 | N811 | N | 7 | 1 |
* | 812 | N812 | N | 7 | 1 |
* | 813 | N813 | N | 7 | 1 |
* | 814 | N814 | N | 7 | 1 |
* | 815 | N815 | N | 7 | 1 |
* | 816 | N816 | N | 7 | 1 |
* | 817 | N817 | N | 7 | 1 |
* | 818 | N818 | N | 7 | 1 |
* | 819 | N819 | N | 7 | 1 |
* | 820 | N820 | N | 7 | 1 |
* | 821 | N821 | N | 7 | 1 |
* | 822 | N822 | N | 7 | 1 |
* | 823 | N823 | N | 7 | 1 |
* | 824 | N824 | N | 7 | 1 |
* | 825 | N825 | N | 7 | 1 |
* | 826 | N826 | N | 7 | 1 |
* | 827 | N827 | N | 7 | 1 |
* | 828 | N828 | N | 7 | 1 |
* | 829 | N829 | N | 7 | 1 |
* | 830 | N830 | N | 7 | 1 |
* | 831 | N831 | N | 7 | 1 |
* | 832 | N832 | N | 7 | 1 |
* | 833 | N833 | N | 7 | 1 |
* | 834 | N834 | N | 7 | 1 |
* | 835 | N835 | N | 7 | 1 |
* | 836 | N836 | N | 7 | 1 |
* | 837 | N837 | N | 7 | 1 |
* | 838 | N838 | N | 7 | 1 |
* | 839 | N839 | N | 7 | 1 |
* | 840 | N840 | N | 7 | 1 |
* | 841 | N841 | N | 7 | 1 |
* | 842 | N842 | N | 7 | 1 |
* | 843 | N843 | N | 7 | 1 |
* | 844 | N844 | N | 7 | 1 |
* | 845 | N845 | N | 7 | 1 |
* | 846 | N846 | N | 7 | 1 |
* | 847 | N847 | N | 7 | 1 |
* | 848 | N848 | N | 7 | 1 |
* | 849 | N849 | N | 7 | 1 |
* | 850 | N850 | N | 7 | 1 |
* | 851 | N851 | N | 7 | 1 |
* | 852 | N852 | N | 7 | 1 |
* | 853 | N853 | N | 7 | 1 |
* | 854 | N854 | N | 7 | 1 |
* | 855 | N855 | N | 7 | 1 |
* | 856 | N856 | N | 7 | 1 |
* | 857 | N857 | N | 7 | 1 |
* | 858 | N858 | N | 7 | 1 |
* | 859 | N859 | N | 7 | 1 |
* | 860 | N860 | N | 7 | 1 |
* | 861 | N861 | N | 7 | 1 |
* | 862 | N862 | N | 7 | 1 |
* | 863 | N863 | N | 7 | 1 |
* | 864 | N864 | N | 7 | 1 |
* | 865 | N865 | N | 7 | 1 |
* | 866 | N866 | N | 7 | 1 |
* | 867 | N867 | N | 7 | 1 |
* | 868 | N868 | N | 7 | 1 |
* | 869 | N869 | N | 7 | 1 |
* | 870 | N870 | N | 7 | 1 |
* | 871 | N871 | N | 7 | 1 |
* | 872 | N872 | N | 7 | 1 |
* | 873 | N873 | N | 7 | 1 |
* | 874 | N874 | N | 7 | 1 |
* | 875 | N875 | N | 7 | 1 |
* | 876 | N876 | N | 7 | 1 |
* | 877 | N877 | N | 7 | 1 |
* | 878 | N878 | N | 7 | 1 |
* | 879 | N879 | N | 7 | 1 |
* | 880 | N880 | N | 7 | 1 |
* | 881 | N881 | N | 7 | 1 |
* | 882 | N882 | N | 7 | 1 |
* | 883 | N883 | N | 7 | 1 |
* | 884 | N884 | N | 7 | 1 |
* | 885 | N885 | N | 7 | 1 |
* | 886 | N886 | N | 7 | 1 |
* | 887 | N887 | N | 7 | 1 |
* | 888 | N888 | N | 7 | 1 |
* | 889 | N889 | N | 7 | 1 |
* | 890 | N890 | N | 7 | 1 |
* | 891 | N891 | N | 7 | 1 |
* | 892 | N892 | N | 7 | 1 |
* | 893 | N893 | N | 7 | 1 |
* | 894 | N894 | N | 7 | 1 |
* | 895 | N895 | N | 7 | 1 |
* | 896 | N896 | N | 7 | 1 |
* | 897 | N897 | N | 7 | 1 |
* | 898 | N898 | N | 7 | 1 |
* | 899 | N899 | N | 7 | 1 |
* | 900 | N900 | N | 7 | 1 |
* | 901 | N901 | N | 7 | 1 |
* | 902 | N902 | N | 7 | 1 |
* | 903 | N903 | N | 7 | 1 |
* | 904 | N904 | N | 7 | 1 |
* ============================================================================
* В С Е Г О длина записи: 35032 байтов. |
* ============================================================================
Re: Sampling data from CSV to DBF
sorry to say but it is simple bad Database Design with so many Fields.
even a SQL Database will not accept so many Fields.
---
you can create a 2000 x 2000 Array ... but you might hit 2 GB when try to fill Array with Value.
but if you have a 2000 x 2000 Bitmap it will be 4 MB only ... and it can be much larger
as your Field are numeric you can use a "Pixel as Field" and RBG Color 0-16777216 are possible Value.
instead of STORE/REPLACE you have to use SetPixel()/GetPixel() to read/write Value
! Note : must be pure Bitmap, does not work well with (compressed) JPG
p.s. do not try to "load" those big Bitmap into XbpBitmap()

even a SQL Database will not accept so many Fields.

---
you can create a 2000 x 2000 Array ... but you might hit 2 GB when try to fill Array with Value.
but if you have a 2000 x 2000 Bitmap it will be 4 MB only ... and it can be much larger
as your Field are numeric you can use a "Pixel as Field" and RBG Color 0-16777216 are possible Value.
instead of STORE/REPLACE you have to use SetPixel()/GetPixel() to read/write Value
! Note : must be pure Bitmap, does not work well with (compressed) JPG
p.s. do not try to "load" those big Bitmap into XbpBitmap()
greetings by OHR
Jimmy
Jimmy
Re: Sampling data from CSV to DBF
If you must use DBF format, you can create multiple DBF files.sorry to say but it is simple bad Database Design with so many Fields.![]()
even a SQL Database will not accept so many Fields.![]()
TARGET01.DBF would have the first 1000 fields
TARGET02.DBF would have the next 1000 fields
TARGET03.DBF would have the next 1000 fields
All TARGETXX.DBF files would have the same number of records.
Code: Select all
USE TARGET01.DBF
USE TARGET02.DBF NEW
USE TARGET03.DBF NEW
DO WHILE !TARGET01->(Eof())
... do something
TARGET01->(dbSkip())
TARGET02->(dbGoTo(TARGET01->(RecNo()))
TARGET03->(dbGoTo(TARGET01->(RecNo()))
ENDDO
The eXpress train is coming - and it has more cars.
Re: Sampling data from CSV to DBF
The below code will create 5 DBFs from the data in TRAIN.CSV
TRAIN1.DBF - TRAIN4.DBF will each have 1024 fields.
TRAIN5.DBF will have 897 fields.
All five DBFs will contain 4459 records each.
After the DBFs are created, a single browse will display 3 numeric columns from each of the 5 databases.
This is just a sample of how the 5 databases are syncronized by RecNo().
Compile the code and run it in the same folder as your TRAIN.CSV file.
If the five TRAIN*.DBF files are already created, the code will break past the creation section and only display the data in the browse section.
TRAIN1.DBF - TRAIN4.DBF will each have 1024 fields.
TRAIN5.DBF will have 897 fields.
All five DBFs will contain 4459 records each.
After the DBFs are created, a single browse will display 3 numeric columns from each of the 5 databases.
This is just a sample of how the 5 databases are syncronized by RecNo().
Compile the code and run it in the same folder as your TRAIN.CSV file.
If the five TRAIN*.DBF files are already created, the code will break past the creation section and only display the data in the browse section.
Code: Select all
#INCLUDE "dcdialog.CH"
FUNCTION Main()
LOCAL nHandle, cLine, aTokens, aFields[0], i, oBrowse, GetList[0], ;
aStru[0], nFieldCount, nDbf, cFieldName, cAlias, nRecords := 0, ;
aRecords[0], cValue, cDbf, nField, GetOptions
BEGIN SEQUENCE
IF File('TRAIN1.DBF') .AND. File('TRAIN2.DBF') .AND. File('TRAIN3.DBF') .AND. File('TRAIN4.DBF') .AND. File('TRAIN5.DBF')
BREAK
ENDIF
nHandle := DC_TxtOpen('train.csv')
cLine := DC_TxtLine(nHandle,Chr(10),100000)
aTokens := DC_TokenArray(cLine,',')
nFieldCount := 0
nDbf := 1
AAdd(aStru,{})
FOR i := 1 TO Len(aTokens)
cFieldName := Upper(aTokens[i])
IF cFieldName == 'ID'
AAdd(aStru[nDbf],{cFieldName,'C',10,0})
ELSEIF cFieldName == 'TARGET'
AAdd(aStru[nDbf],{cFieldName,'N',15,1})
ELSEIF !Empty(cFieldName)
AAdd(aStru[nDbf],{cFieldName,'N',15,1})
ENDIF
nFieldCount++
IF nFieldCount % 1024 == 0
AAdd(aStru,{})
nDbf++
ENDIF
NEXT
ASize(aRecords,Len(aStru))
FOR i := 1 TO Len(aStru)
cDbf := 'TRAIN' + Alltrim(Str(i)) + '.DBF'
dbCreate(cDbf,aStru[i],'DBFNTX')
USE (cDbf) NEW VIA 'DBFNTX' EXCLUSIVE
NEXT
DC_TxtSkip(nHandle,1,Chr(10),100000)
WTF 'Please wait...'
DO WHILE !DC_TxtEof(nHandle)
nDbf := 1
nField := 1
cAlias := 'TRAIN' + Alltrim(Str(nDbf))
(cAlias)->(dbAppend())
cLine := DC_TxtLine(nHandle,Chr(10),100000)
aTokens := DC_TokenArray(cLine,',')
FOR i := 1 TO Len(aTokens)
cValue := Upper(aTokens[i])
cFieldName := aStru[nDbf,nField,1]
IF cFieldName == 'ID'
(cAlias)->(FieldPut(nField,cValue))
ELSE
(cAlias)->(FieldPut(nField,Val(cValue)))
ENDIF
nField++
IF nField > 1024
nDbf++
nField := 1
cAlias := 'TRAIN' + Alltrim(Str(nDbf))
(cAlias)->(dbAppend())
ELSEIF nField > Len(aStru[nDbf])
EXIT
ENDIF
NEXT
DC_TxtSkip(nHandle,1,Chr(10),100000)
ENDDO
DC_TxtClose(nHandle)
dbCloseAll()
END SEQUENCE
USE TRAIN1 NEW VIA 'DBFNTX'
USE TRAIN2 NEW VIA 'DBFNTX'
USE TRAIN3 NEW VIA 'DBFNTX'
USE TRAIN4 NEW VIA 'DBFNTX'
USE TRAIN5 NEW VIA 'DBFNTX'
TRAIN1->(dbGoTop())
aStru := {}
AAdd(aStru,TRAIN1->(dbStruct()))
AAdd(aStru,TRAIN2->(dbStruct()))
AAdd(aStru,TRAIN3->(dbStruct()))
AAdd(aStru,TRAIN4->(dbStruct()))
AAdd(aStru,TRAIN5->(dbStruct()))
@ 0,0 DCBROWSE oBrowse ALIAS 'TRAIN1' SIZE 30,20 FIT FONT '10.Lucida Console' ;
HEADLINES 2
DCBROWSECOL DATA {||TRAIN2->(dbGoTo(TRAIN1->(RecNo()))), ;
TRAIN3->(dbGoTo(TRAIN1->(RecNo()))), ;
TRAIN4->(dbGoTo(TRAIN1->(RecNo()))), ;
TRAIN5->(dbGoTo(TRAIN1->(RecNo()))), ;
TRAIN1->(RecNo())} ;
PARENT oBrowse PICTURE '999999' HEADER 'Record #' WIDTH 10
DCBROWSECOL FIELD TRAIN1->id HEADER 'TRAIN1;ID' WIDTH 10 PARENT oBrowse
DCBROWSECOL FIELD TRAIN1->target HEADER 'TRAIN1;Target' WIDTH 11 PARENT oBrowse PICTURE '99999999.9'
FOR i := 3 TO 5
DCBROWSECOL DATA FieldBlock(i,'TRAIN1') PARENT oBrowse WIDTH 11 ;
HEADER 'TRAIN1;' + aStru[1,i,1] ;
PICTURE '99999999.9'
NEXT
DCBROWSECOL SEPARATOR PARENT oBrowse
FOR i := 1 TO 3
DCBROWSECOL DATA FieldBlock(i,'TRAIN2') PARENT oBrowse WIDTH 11 ;
HEADER 'TRAIN2;' + aStru[2,i,1] ;
PICTURE '99999999.9'
NEXT
DCBROWSECOL SEPARATOR PARENT oBrowse
FOR i := 1 TO 3
DCBROWSECOL DATA FieldBlock(i,'TRAIN3') PARENT oBrowse WIDTH 11 ;
HEADER 'TRAIN3;' + aStru[3,i,1] ;
PICTURE '99999999.9'
NEXT
DCBROWSECOL SEPARATOR PARENT oBrowse
FOR i := 1 TO 3
DCBROWSECOL DATA FieldBlock(i,'TRAIN4') PARENT oBrowse WIDTH 11 ;
HEADER 'TRAIN4;' + aStru[4,i,1] ;
PICTURE '99999999.9'
NEXT
DCBROWSECOL SEPARATOR PARENT oBrowse
FOR i := 1 TO 3
DCBROWSECOL DATA FieldBlock(i,'TRAIN5') PARENT oBrowse WIDTH 11 ;
HEADER 'TRAIN5;' + aStru[4,i,1] ;
PICTURE '99999999.9'
NEXT
DCGETOPTIONS RESIZE RESIZEDEFAULT DCGUI_RESIZE_RESIZEONLY
DCREAD GUI FIT TITLE 'Browsing Train1 - Train4' OPTIONS GetOptions
RETURN nil
* ----------
STATIC FUNCTION FieldBlock( nFieldPos, cAlias )
RETURN {||(cAlias)->(FieldGet(nFieldPos))}
* ----------
PROC appsys ; RETURN
The eXpress train is coming - and it has more cars.