Sampling data from CSV to DBF

This forum is for eXpress++ general support.
Message
Author
User avatar
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

#11 Post by Eugene Lutsenko »

Is there anything going on with the sample from CSV to DBF?

Victorio
Posts: 621
Joined: Sun Jan 18, 2015 11:43 am
Location: Slovakia

Re: Sampling data from CSV to DBF

#12 Post by Victorio »

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 )

User avatar
rdonnay
Site Admin
Posts: 4728
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Sampling data from CSV to DBF

#13 Post by rdonnay »

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
The eXpress train is coming - and it has more cars.

User avatar
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

#14 Post by Eugene Lutsenko »

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
Last edited by Eugene Lutsenko on Mon Jun 25, 2018 1:33 pm, edited 1 time in total.

User avatar
rdonnay
Site Admin
Posts: 4728
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Sampling data from CSV to DBF

#15 Post by rdonnay »

I think that both of your problems can be solved.

I will need your CSV files and also your Empty DBF files.
The eXpress train is coming - and it has more cars.

User avatar
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

#16 Post by Eugene Lutsenko »

rdonnay wrote:I think that both of your problems can be solved.

I will need your CSV files and also your Empty DBF files.
Now I will send incorrect dbf. which is obtained when you try to create a standard means dbf file with the number of fields 4993

User avatar
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

#17 Post by Eugene Lutsenko »

An attempt to create a database with 4993 fields. The field names and sizes are shortened, but that doesn't work:

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   байтов.                                   |
*   ============================================================================
[/size]

User avatar
Auge_Ohr
Posts: 1406
Joined: Wed Feb 24, 2010 3:44 pm

Re: Sampling data from CSV to DBF

#18 Post by Auge_Ohr »

sorry to say but it is simple bad Database Design with so many Fields. :naughty:
even a SQL Database will not accept so many Fields. :roll:

---

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

User avatar
rdonnay
Site Admin
Posts: 4728
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Sampling data from CSV to DBF

#19 Post by rdonnay »

sorry to say but it is simple bad Database Design with so many Fields. :naughty:
even a SQL Database will not accept so many Fields. :roll:
If you must use DBF format, you can create multiple DBF files.

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.

User avatar
rdonnay
Site Admin
Posts: 4728
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Sampling data from CSV to DBF

#20 Post by rdonnay »

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.

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.

Post Reply