From 5d5118fced096ca939b872ef97bf440a24399d97 Mon Sep 17 00:00:00 2001 From: Nicolas Boisselier Date: Thu, 4 Jan 2018 03:27:27 +0000 Subject: [PATCH] www/dbq/html/default.css --- lib/php/db/table.php | 6 +- share/db/country | 17 +++ share/db/country.csv | 252 +++++++++++++++++++++++++++++++++++++++ share/db/country.sql | 48 ++++++++ share/db/nb.db | Bin 872448 -> 906240 bytes share/db/timezone.sql | 1 - share/db/update.sh | 12 +- share/sql/country.sql | 28 ++--- www/dbq/html/default.css | 14 +++ 9 files changed, 360 insertions(+), 18 deletions(-) create mode 100755 share/db/country create mode 100644 share/db/country.csv create mode 100644 share/db/country.sql diff --git a/lib/php/db/table.php b/lib/php/db/table.php index 1f7a4f9e..72c9f009 100644 --- a/lib/php/db/table.php +++ b/lib/php/db/table.php @@ -657,9 +657,11 @@ Class Table extends nb { # See: http://dev.w3.org/html5/html-author/charref $html = ''; + $title = $this->prettyText($name).': '; + # Asc $sel = ( $this->p('orderby')=="$name asc") ? " sel" : ""; - $html .= '' + $html .= '' .'' .''; #$html .= ' '; @@ -670,7 +672,7 @@ Class Table extends nb { # Desc $sel = ( $this->p('orderby')=="$name desc") ? " sel" : ""; - $html .= '' + $html .= '' .'' .''; diff --git a/share/db/country b/share/db/country new file mode 100755 index 00000000..9d60ae94 --- /dev/null +++ b/share/db/country @@ -0,0 +1,17 @@ +#!/usr/bin/env perl +use strict; +use warnings; +@ARGV = ('curl -s http://download.geonames.org/export/dump/countryInfo.txt |'); + +while (<>) { + #s/^#ISO/ISO/; + next if /^#/; + chomp($_); + #for postgres s,\\,\\\\,g; + my @r = split("\t",$_); + unshift @r,$r[0]; + while (@r<20) { + push @r,''; + } + print join("\t",@r)."\n"; +} diff --git a/share/db/country.csv b/share/db/country.csv new file mode 100644 index 00000000..169ba045 --- /dev/null +++ b/share/db/country.csv @@ -0,0 +1,252 @@ +AD AD AND 020 AN Andorra Andorra la Vella 468 84000 EU .ad EUR Euro 376 AD### ^(?:AD)*(\d{3})$ ca 3041565 ES,FR +AE AE ARE 784 AE United Arab Emirates Abu Dhabi 82880 4975593 AS .ae AED Dirham 971 ar-AE,fa,en,hi,ur 290557 SA,OM +AF AF AFG 004 AF Afghanistan Kabul 647500 29121286 AS .af AFN Afghani 93 fa-AF,ps,uz-AF,tk 1149361 TM,CN,IR,TJ,PK,UZ +AG AG ATG 028 AC Antigua and Barbuda St. John's 443 86754 NA .ag XCD Dollar +1-268 en-AG 3576396 +AI AI AIA 660 AV Anguilla The Valley 102 13254 NA .ai XCD Dollar +1-264 en-AI 3573511 +AL AL ALB 008 AL Albania Tirana 28748 2986952 EU .al ALL Lek 355 sq,el 783754 MK,GR,ME,RS,XK +AM AM ARM 051 AM Armenia Yerevan 29800 2968000 AS .am AMD Dram 374 ###### ^(\d{6})$ hy 174982 GE,IR,AZ,TR +AO AO AGO 024 AO Angola Luanda 1246700 13068161 AF .ao AOA Kwanza 244 pt-AO 3351879 CD,NA,ZM,CG +AQ AQ ATA 010 AY Antarctica 14000000 0 AN .aq 6697173 +AR AR ARG 032 AR Argentina Buenos Aires 2766890 41343201 SA .ar ARS Peso 54 @####@@@ ^[A-Z]?\d{4}[A-Z]{0,3}$ es-AR,en,it,de,fr,gn 3865483 CL,BO,UY,PY,BR +AS AS ASM 016 AQ American Samoa Pago Pago 199 57881 OC .as USD Dollar +1-684 #####-#### 96799 en-AS,sm,to 5880801 +AT AT AUT 040 AU Austria Vienna 83858 8205000 EU .at EUR Euro 43 #### ^(\d{4})$ de-AT,hr,hu,sl 2782113 CH,DE,HU,SK,CZ,IT,SI,LI +AU AU AUS 036 AS Australia Canberra 7686850 21515754 OC .au AUD Dollar 61 #### ^(\d{4})$ en-AU 2077456 +AW AW ABW 533 AA Aruba Oranjestad 193 71566 NA .aw AWG Guilder 297 nl-AW,es,en 3577279 +AX AX ALA 248 Aland Islands Mariehamn 1580 26711 EU .ax EUR Euro +358-18 ##### ^(?:FI)*(\d{5})$ sv-AX 661882 FI +AZ AZ AZE 031 AJ Azerbaijan Baku 86600 8303512 AS .az AZN Manat 994 AZ #### ^(?:AZ)*(\d{4})$ az,ru,hy 587116 GE,IR,AM,TR,RU +BA BA BIH 070 BK Bosnia and Herzegovina Sarajevo 51129 4590000 EU .ba BAM Marka 387 ##### ^(\d{5})$ bs,hr-BA,sr-BA 3277605 HR,ME,RS +BB BB BRB 052 BB Barbados Bridgetown 431 285653 NA .bb BBD Dollar +1-246 BB##### ^(?:BB)*(\d{5})$ en-BB 3374084 +BD BD BGD 050 BG Bangladesh Dhaka 144000 156118464 AS .bd BDT Taka 880 #### ^(\d{4})$ bn-BD,en 1210997 MM,IN +BE BE BEL 056 BE Belgium Brussels 30510 10403000 EU .be EUR Euro 32 #### ^(\d{4})$ nl-BE,fr-BE,de-BE 2802361 DE,NL,LU,FR +BF BF BFA 854 UV Burkina Faso Ouagadougou 274200 16241811 AF .bf XOF Franc 226 fr-BF 2361809 NE,BJ,GH,CI,TG,ML +BG BG BGR 100 BU Bulgaria Sofia 110910 7148785 EU .bg BGN Lev 359 #### ^(\d{4})$ bg,tr-BG,rom 732800 MK,GR,RO,TR,RS +BH BH BHR 048 BA Bahrain Manama 665 738004 AS .bh BHD Dinar 973 ####|### ^(\d{3}\d?)$ ar-BH,en,fa,ur 290291 +BI BI BDI 108 BY Burundi Bujumbura 27830 9863117 AF .bi BIF Franc 257 fr-BI,rn 433561 TZ,CD,RW +BJ BJ BEN 204 BN Benin Porto-Novo 112620 9056010 AF .bj XOF Franc 229 fr-BJ 2395170 NE,TG,BF,NG +BL BL BLM 652 TB Saint Barthelemy Gustavia 21 8450 NA .gp EUR Euro 590 ### ### fr 3578476 +BM BM BMU 060 BD Bermuda Hamilton 53 65365 NA .bm BMD Dollar +1-441 @@ ## ^([A-Z]{2}\d{2})$ en-BM,pt 3573345 +BN BN BRN 096 BX Brunei Bandar Seri Begawan 5770 395027 AS .bn BND Dollar 673 @@#### ^([A-Z]{2}\d{4})$ ms-BN,en-BN 1820814 MY +BO BO BOL 068 BL Bolivia Sucre 1098580 9947418 SA .bo BOB Boliviano 591 es-BO,qu,ay 3923057 PE,CL,PY,BR,AR +BQ BQ BES 535 Bonaire, Saint Eustatius and Saba 328 18012 NA .bq USD Dollar 599 nl,pap,en 7626844 +BR BR BRA 076 BR Brazil Brasilia 8511965 201103330 SA .br BRL Real 55 #####-### ^\d{5}-\d{3}$ pt-BR,es,en,fr 3469034 SR,PE,BO,UY,GY,PY,GF,VE,CO,AR +BS BS BHS 044 BF Bahamas Nassau 13940 301790 NA .bs BSD Dollar +1-242 en-BS 3572887 +BT BT BTN 064 BT Bhutan Thimphu 47000 699847 AS .bt BTN Ngultrum 975 dz 1252634 CN,IN +BV BV BVT 074 BV Bouvet Island 49 0 AN .bv NOK Krone 3371123 +BW BW BWA 072 BC Botswana Gaborone 600370 2029307 AF .bw BWP Pula 267 en-BW,tn-BW 933860 ZW,ZA,NA +BY BY BLR 112 BO Belarus Minsk 207600 9685000 EU .by BYR Ruble 375 ###### ^(\d{6})$ be,ru 630336 PL,LT,UA,RU,LV +BZ BZ BLZ 084 BH Belize Belmopan 22966 314522 NA .bz BZD Dollar 501 en-BZ,es 3582678 GT,MX +CA CA CAN 124 CA Canada Ottawa 9984670 33679000 NA .ca CAD Dollar 1 @#@ #@# ^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]) ?(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$ en-CA,fr-CA,iu 6251999 US +CC CC CCK 166 CK Cocos Islands West Island 14 628 AS .cc AUD Dollar 61 ms-CC,en 1547376 +CD CD COD 180 CG Democratic Republic of the Congo Kinshasa 2345410 70916439 AF .cd CDF Franc 243 fr-CD,ln,kg 203312 TZ,CF,SS,RW,ZM,BI,UG,CG,AO +CF CF CAF 140 CT Central African Republic Bangui 622984 4844927 AF .cf XAF Franc 236 fr-CF,sg,ln,kg 239880 TD,SD,CD,SS,CM,CG +CG CG COG 178 CF Republic of the Congo Brazzaville 342000 3039126 AF .cg XAF Franc 242 fr-CG,kg,ln-CG 2260494 CF,GA,CD,CM,AO +CH CH CHE 756 SZ Switzerland Bern 41290 7581000 EU .ch CHF Franc 41 #### ^(\d{4})$ de-CH,fr-CH,it-CH,rm 2658434 DE,IT,LI,FR,AT +CI CI CIV 384 IV Ivory Coast Yamoussoukro 322460 21058798 AF .ci XOF Franc 225 fr-CI 2287781 LR,GH,GN,BF,ML +CK CK COK 184 CW Cook Islands Avarua 240 21388 OC .ck NZD Dollar 682 en-CK,mi 1899402 +CL CL CHL 152 CI Chile Santiago 756950 16746491 SA .cl CLP Peso 56 ####### ^(\d{7})$ es-CL 3895114 PE,BO,AR +CM CM CMR 120 CM Cameroon Yaounde 475440 19294149 AF .cm XAF Franc 237 en-CM,fr-CM 2233387 TD,CF,GA,GQ,CG,NG +CN CN CHN 156 CH China Beijing 9596960 1330044000 AS .cn CNY Yuan Renminbi 86 ###### ^(\d{6})$ zh-CN,yue,wuu,dta,ug,za 1814991 LA,BT,TJ,KZ,MN,AF,NP,MM,KG,PK,KP,RU,VN,IN +CO CO COL 170 CO Colombia Bogota 1138910 47790000 SA .co COP Peso 57 es-CO 3686110 EC,PE,PA,BR,VE +CR CR CRI 188 CS Costa Rica San Jose 51100 4516220 NA .cr CRC Colon 506 ##### ^(\d{5})$ es-CR,en 3624060 PA,NI +CU CU CUB 192 CU Cuba Havana 110860 11423000 NA .cu CUP Peso 53 CP ##### ^(?:CP)*(\d{5})$ es-CU 3562981 US +CV CV CPV 132 CV Cape Verde Praia 4033 508659 AF .cv CVE Escudo 238 #### ^(\d{4})$ pt-CV 3374766 +CW CW CUW 531 UC Curacao Willemstad 444 141766 NA .cw ANG Guilder 599 nl,pap 7626836 +CX CX CXR 162 KT Christmas Island Flying Fish Cove 135 1500 AS .cx AUD Dollar 61 #### ^(\d{4})$ en,zh,ms-CC 2078138 +CY CY CYP 196 CY Cyprus Nicosia 9250 1102677 EU .cy EUR Euro 357 #### ^(\d{4})$ el-CY,tr-CY,en 146669 +CZ CZ CZE 203 EZ Czechia Prague 78866 10476000 EU .cz CZK Koruna 420 ### ## ^\d{3}\s?\d{2}$ cs,sk 3077311 PL,DE,SK,AT +DE DE DEU 276 GM Germany Berlin 357021 81802257 EU .de EUR Euro 49 ##### ^(\d{5})$ de 2921044 CH,PL,NL,DK,BE,CZ,LU,FR,AT +DJ DJ DJI 262 DJ Djibouti Djibouti 23000 740528 AF .dj DJF Franc 253 fr-DJ,ar,so-DJ,aa 223816 ER,ET,SO +DK DK DNK 208 DA Denmark Copenhagen 43094 5484000 EU .dk DKK Krone 45 #### ^(\d{4})$ da-DK,en,fo,de-DK 2623032 DE +DM DM DMA 212 DO Dominica Roseau 754 72813 NA .dm XCD Dollar +1-767 en-DM 3575830 +DO DO DOM 214 DR Dominican Republic Santo Domingo 48730 9823821 NA .do DOP Peso +1-809 and 1-829 ##### ^(\d{5})$ es-DO 3508796 HT +DZ DZ DZA 012 AG Algeria Algiers 2381740 34586184 AF .dz DZD Dinar 213 ##### ^(\d{5})$ ar-DZ 2589581 NE,EH,LY,MR,TN,MA,ML +EC EC ECU 218 EC Ecuador Quito 283560 14790608 SA .ec USD Dollar 593 @####@ ^([a-zA-Z]\d{4}[a-zA-Z])$ es-EC 3658394 PE,CO +EE EE EST 233 EN Estonia Tallinn 45226 1291170 EU .ee EUR Euro 372 ##### ^(\d{5})$ et,ru 453733 RU,LV +EG EG EGY 818 EG Egypt Cairo 1001450 80471869 AF .eg EGP Pound 20 ##### ^(\d{5})$ ar-EG,en,fr 357994 LY,SD,IL,PS +EH EH ESH 732 WI Western Sahara El-Aaiun 266000 273008 AF .eh MAD Dirham 212 ar,mey 2461445 DZ,MR,MA +ER ER ERI 232 ER Eritrea Asmara 121320 5792984 AF .er ERN Nakfa 291 aa-ER,ar,tig,kun,ti-ER 338010 ET,SD,DJ +ES ES ESP 724 SP Spain Madrid 504782 46505963 EU .es EUR Euro 34 ##### ^(\d{5})$ es-ES,ca,gl,eu,oc 2510769 AD,PT,GI,FR,MA +ET ET ETH 231 ET Ethiopia Addis Ababa 1127127 88013491 AF .et ETB Birr 251 #### ^(\d{4})$ am,en-ET,om-ET,ti-ET,so-ET,sid 337996 ER,KE,SD,SS,SO,DJ +FI FI FIN 246 FI Finland Helsinki 337030 5244000 EU .fi EUR Euro 358 ##### ^(?:FI)*(\d{5})$ fi-FI,sv-FI,smn 660013 NO,RU,SE +FJ FJ FJI 242 FJ Fiji Suva 18270 875983 OC .fj FJD Dollar 679 en-FJ,fj 2205218 +FK FK FLK 238 FK Falkland Islands Stanley 12173 2638 SA .fk FKP Pound 500 en-FK 3474414 +FM FM FSM 583 FM Micronesia Palikir 702 107708 OC .fm USD Dollar 691 ##### ^(\d{5})$ en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg 2081918 +FO FO FRO 234 FO Faroe Islands Torshavn 1399 48228 EU .fo DKK Krone 298 ### ^(?:FO)*(\d{3})$ fo,da-FO 2622320 +FR FR FRA 250 FR France Paris 547030 64768389 EU .fr EUR Euro 33 ##### ^(\d{5})$ fr-FR,frp,br,co,ca,eu,oc 3017382 CH,DE,BE,LU,IT,AD,MC,ES +GA GA GAB 266 GB Gabon Libreville 267667 1545255 AF .ga XAF Franc 241 fr-GA 2400553 CM,GQ,CG +GB GB GBR 826 UK United Kingdom London 244820 62348447 EU .uk GBP Pound 44 @# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA ^((?:(?:[A-PR-UWYZ][A-HK-Y]\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\d[A-HJKPS-UW0-9])\s\d[ABD-HJLNP-UW-Z]{2})|GIR\s?0AA)$ en-GB,cy-GB,gd 2635167 IE +GD GD GRD 308 GJ Grenada St. George's 344 107818 NA .gd XCD Dollar +1-473 en-GD 3580239 +GE GE GEO 268 GG Georgia Tbilisi 69700 4630000 AS .ge GEL Lari 995 #### ^(\d{4})$ ka,ru,hy,az 614540 AM,AZ,TR,RU +GF GF GUF 254 FG French Guiana Cayenne 91000 195506 SA .gf EUR Euro 594 ##### ^((97|98)3\d{2})$ fr-GF 3381670 SR,BR +GG GG GGY 831 GK Guernsey St Peter Port 78 65228 EU .gg GBP Pound +44-1481 @# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA ^((?:(?:[A-PR-UWYZ][A-HK-Y]\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\d[A-HJKPS-UW0-9])\s\d[ABD-HJLNP-UW-Z]{2})|GIR\s?0AA)$ en,fr 3042362 +GH GH GHA 288 GH Ghana Accra 239460 24339838 AF .gh GHS Cedi 233 en-GH,ak,ee,tw 2300660 CI,TG,BF +GI GI GIB 292 GI Gibraltar Gibraltar 6.5 27884 EU .gi GIP Pound 350 en-GI,es,it,pt 2411586 ES +GL GL GRL 304 GL Greenland Nuuk 2166086 56375 NA .gl DKK Krone 299 #### ^(\d{4})$ kl,da-GL,en 3425505 +GM GM GMB 270 GA Gambia Banjul 11300 1593256 AF .gm GMD Dalasi 220 en-GM,mnk,wof,wo,ff 2413451 SN +GN GN GIN 324 GV Guinea Conakry 245857 10324025 AF .gn GNF Franc 224 fr-GN 2420477 LR,SN,SL,CI,GW,ML +GP GP GLP 312 GP Guadeloupe Basse-Terre 1780 443000 NA .gp EUR Euro 590 ##### ^((97|98)\d{3})$ fr-GP 3579143 +GQ GQ GNQ 226 EK Equatorial Guinea Malabo 28051 1014999 AF .gq XAF Franc 240 es-GQ,fr 2309096 GA,CM +GR GR GRC 300 GR Greece Athens 131940 11000000 EU .gr EUR Euro 30 ### ## ^(\d{5})$ el-GR,en,fr 390903 AL,MK,TR,BG +GS GS SGS 239 SX South Georgia and the South Sandwich Islands Grytviken 3903 30 AN .gs GBP Pound en 3474415 +GT GT GTM 320 GT Guatemala Guatemala City 108890 13550440 NA .gt GTQ Quetzal 502 ##### ^(\d{5})$ es-GT 3595528 MX,HN,BZ,SV +GU GU GUM 316 GQ Guam Hagatna 549 159358 OC .gu USD Dollar +1-671 969## ^(969\d{2})$ en-GU,ch-GU 4043988 +GW GW GNB 624 PU Guinea-Bissau Bissau 36120 1565126 AF .gw XOF Franc 245 #### ^(\d{4})$ pt-GW,pov 2372248 SN,GN +GY GY GUY 328 GY Guyana Georgetown 214970 748486 SA .gy GYD Dollar 592 en-GY 3378535 SR,BR,VE +HK HK HKG 344 HK Hong Kong Hong Kong 1092 6898686 AS .hk HKD Dollar 852 zh-HK,yue,zh,en 1819730 +HM HM HMD 334 HM Heard Island and McDonald Islands 412 0 AN .hm AUD Dollar 1547314 +HN HN HND 340 HO Honduras Tegucigalpa 112090 7989415 NA .hn HNL Lempira 504 @@#### ^([A-Z]{2}\d{4})$ es-HN 3608932 GT,NI,SV +HR HR HRV 191 HR Croatia Zagreb 56542 4284889 EU .hr HRK Kuna 385 ##### ^(?:HR)*(\d{5})$ hr-HR,sr 3202326 HU,SI,BA,ME,RS +HT HT HTI 332 HA Haiti Port-au-Prince 27750 9648924 NA .ht HTG Gourde 509 HT#### ^(?:HT)*(\d{4})$ ht,fr-HT 3723988 DO +HU HU HUN 348 HU Hungary Budapest 93030 9982000 EU .hu HUF Forint 36 #### ^(\d{4})$ hu-HU 719819 SK,SI,RO,UA,HR,AT,RS +ID ID IDN 360 ID Indonesia Jakarta 1919440 242968342 AS .id IDR Rupiah 62 ##### ^(\d{5})$ id,en,nl,jv 1643084 PG,TL,MY +IE IE IRL 372 EI Ireland Dublin 70280 4622917 EU .ie EUR Euro 353 @@@ @@@@ ^[A-Z]\d{2}$|^[A-Z]{3}[A-Z]{4}$ en-IE,ga-IE 2963597 GB +IL IL ISR 376 IS Israel Jerusalem 20770 7353985 AS .il ILS Shekel 972 ##### ^(\d{5})$ he,ar-IL,en-IL, 294640 SY,JO,LB,EG,PS +IM IM IMN 833 IM Isle of Man Douglas 572 75049 EU .im GBP Pound +44-1624 @# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA ^((?:(?:[A-PR-UWYZ][A-HK-Y]\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\d[A-HJKPS-UW0-9])\s\d[ABD-HJLNP-UW-Z]{2})|GIR\s?0AA)$ en,gv 3042225 +IN IN IND 356 IN India New Delhi 3287590 1173108018 AS .in INR Rupee 91 ###### ^(\d{6})$ en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc 1269750 CN,NP,MM,BT,PK,BD +IO IO IOT 086 IO British Indian Ocean Territory Diego Garcia 60 4000 AS .io USD Dollar 246 en-IO 1282588 +IQ IQ IRQ 368 IZ Iraq Baghdad 437072 29671605 AS .iq IQD Dinar 964 ##### ^(\d{5})$ ar-IQ,ku,hy 99237 SY,SA,IR,JO,TR,KW +IR IR IRN 364 IR Iran Tehran 1648000 76923300 AS .ir IRR Rial 98 ########## ^(\d{10})$ fa-IR,ku 130758 TM,AF,IQ,AM,PK,AZ,TR +IS IS ISL 352 IC Iceland Reykjavik 103000 308910 EU .is ISK Krona 354 ### ^(\d{3})$ is,en,de,da,sv,no 2629691 +IT IT ITA 380 IT Italy Rome 301230 60340328 EU .it EUR Euro 39 ##### ^(\d{5})$ it-IT,de-IT,fr-IT,sc,ca,co,sl 3175395 CH,VA,SI,SM,FR,AT +JE JE JEY 832 JE Jersey Saint Helier 116 90812 EU .je GBP Pound +44-1534 @# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA ^((?:(?:[A-PR-UWYZ][A-HK-Y]\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\d[A-HJKPS-UW0-9])\s\d[ABD-HJLNP-UW-Z]{2})|GIR\s?0AA)$ en,pt 3042142 +JM JM JAM 388 JM Jamaica Kingston 10991 2847232 NA .jm JMD Dollar +1-876 en-JM 3489940 +JO JO JOR 400 JO Jordan Amman 92300 6407085 AS .jo JOD Dinar 962 ##### ^(\d{5})$ ar-JO,en 248816 SY,SA,IQ,IL,PS +JP JP JPN 392 JA Japan Tokyo 377835 127288000 AS .jp JPY Yen 81 ###-#### ^\d{3}-\d{4}$ ja 1861060 +KE KE KEN 404 KE Kenya Nairobi 582650 40046566 AF .ke KES Shilling 254 ##### ^(\d{5})$ en-KE,sw-KE 192950 ET,TZ,SS,SO,UG +KG KG KGZ 417 KG Kyrgyzstan Bishkek 198500 5776500 AS .kg KGS Som 996 ###### ^(\d{6})$ ky,uz,ru 1527747 CN,TJ,UZ,KZ +KH KH KHM 116 CB Cambodia Phnom Penh 181040 14453680 AS .kh KHR Riels 855 ##### ^(\d{5})$ km,fr,en 1831722 LA,TH,VN +KI KI KIR 296 KR Kiribati Tarawa 811 92533 OC .ki AUD Dollar 686 en-KI,gil 4030945 +KM KM COM 174 CN Comoros Moroni 2170 773407 AF .km KMF Franc 269 ar,fr-KM 921929 +KN KN KNA 659 SC Saint Kitts and Nevis Basseterre 261 51134 NA .kn XCD Dollar +1-869 en-KN 3575174 +KP KP PRK 408 KN North Korea Pyongyang 120540 22912177 AS .kp KPW Won 850 ###-### ^(\d{6})$ ko-KP 1873107 CN,KR,RU +KR KR KOR 410 KS South Korea Seoul 98480 48422644 AS .kr KRW Won 82 SEOUL ###-### ^(?:SEOUL)*(\d{6})$ ko-KR,en 1835841 KP +XK XK XKX 0 KV Kosovo Pristina 10908 1800000 EU EUR Euro sq,sr 831053 RS,AL,MK,ME +KW KW KWT 414 KU Kuwait Kuwait City 17820 2789132 AS .kw KWD Dinar 965 ##### ^(\d{5})$ ar-KW,en 285570 SA,IQ +KY KY CYM 136 CJ Cayman Islands George Town 262 44270 NA .ky KYD Dollar +1-345 en-KY 3580718 +KZ KZ KAZ 398 KZ Kazakhstan Astana 2717300 15340000 AS .kz KZT Tenge 7 ###### ^(\d{6})$ kk,ru 1522867 TM,CN,KG,UZ,RU +LA LA LAO 418 LA Laos Vientiane 236800 6368162 AS .la LAK Kip 856 ##### ^(\d{5})$ lo,fr,en 1655842 CN,MM,KH,TH,VN +LB LB LBN 422 LE Lebanon Beirut 10400 4125247 AS .lb LBP Pound 961 #### ####|#### ^(\d{4}(\d{4})?)$ ar-LB,fr-LB,en,hy 272103 SY,IL +LC LC LCA 662 ST Saint Lucia Castries 616 160922 NA .lc XCD Dollar +1-758 en-LC 3576468 +LI LI LIE 438 LS Liechtenstein Vaduz 160 35000 EU .li CHF Franc 423 #### ^(\d{4})$ de-LI 3042058 CH,AT +LK LK LKA 144 CE Sri Lanka Colombo 65610 21513990 AS .lk LKR Rupee 94 ##### ^(\d{5})$ si,ta,en 1227603 +LR LR LBR 430 LI Liberia Monrovia 111370 3685076 AF .lr LRD Dollar 231 #### ^(\d{4})$ en-LR 2275384 SL,CI,GN +LS LS LSO 426 LT Lesotho Maseru 30355 1919552 AF .ls LSL Loti 266 ### ^(\d{3})$ en-LS,st,zu,xh 932692 ZA +LT LT LTU 440 LH Lithuania Vilnius 65200 2944459 EU .lt EUR Euro 370 LT-##### ^(?:LT)*(\d{5})$ lt,ru,pl 597427 PL,BY,RU,LV +LU LU LUX 442 LU Luxembourg Luxembourg 2586 497538 EU .lu EUR Euro 352 L-#### ^(?:L-)?\d{4}$ lb,de-LU,fr-LU 2960313 DE,BE,FR +LV LV LVA 428 LG Latvia Riga 64589 2217969 EU .lv EUR Euro 371 LV-#### ^(?:LV)*(\d{4})$ lv,ru,lt 458258 LT,EE,BY,RU +LY LY LBY 434 LY Libya Tripoli 1759540 6461454 AF .ly LYD Dinar 218 ar-LY,it,en 2215636 TD,NE,DZ,SD,TN,EG +MA MA MAR 504 MO Morocco Rabat 446550 33848242 AF .ma MAD Dirham 212 ##### ^(\d{5})$ ar-MA,ber,fr 2542007 DZ,EH,ES +MC MC MCO 492 MN Monaco Monaco 1.95 32965 EU .mc EUR Euro 377 ##### ^(\d{5})$ fr-MC,en,it 2993457 FR +MD MD MDA 498 MD Moldova Chisinau 33843 4324000 EU .md MDL Leu 373 MD-#### ^MD-\d{4}$ ro,ru,gag,tr 617790 RO,UA +ME ME MNE 499 MJ Montenegro Podgorica 14026 666730 EU .me EUR Euro 382 ##### ^(\d{5})$ sr,hu,bs,sq,hr,rom 3194884 AL,HR,BA,RS,XK +MF MF MAF 663 RN Saint Martin Marigot 53 35925 NA .gp EUR Euro 590 ### ### fr 3578421 SX +MG MG MDG 450 MA Madagascar Antananarivo 587040 21281844 AF .mg MGA Ariary 261 ### ^(\d{3})$ fr-MG,mg 1062947 +MH MH MHL 584 RM Marshall Islands Majuro 181.3 65859 OC .mh USD Dollar 692 #####-#### ^969\d{2}(-\d{4})$ mh,en-MH 2080185 +MK MK MKD 807 MK Macedonia Skopje 25333 2062294 EU .mk MKD Denar 389 #### ^(\d{4})$ mk,sq,tr,rmm,sr 718075 AL,GR,BG,RS,XK +ML ML MLI 466 ML Mali Bamako 1240000 13796354 AF .ml XOF Franc 223 fr-ML,bm 2453866 SN,NE,DZ,CI,GN,MR,BF +MM MM MMR 104 BM Myanmar Nay Pyi Taw 678500 53414374 AS .mm MMK Kyat 95 ##### ^(\d{5})$ my 1327865 CN,LA,TH,BD,IN +MN MN MNG 496 MG Mongolia Ulan Bator 1565000 3086918 AS .mn MNT Tugrik 976 ###### ^(\d{6})$ mn,ru 2029969 CN,RU +MO MO MAC 446 MC Macao Macao 254 449198 AS .mo MOP Pataca 853 zh,zh-MO,pt 1821275 +MP MP MNP 580 CQ Northern Mariana Islands Saipan 477 53883 OC .mp USD Dollar +1-670 #####-#### ^9695\d{1}(-\d{4})$ fil,tl,zh,ch-MP,en-MP 4041468 +MQ MQ MTQ 474 MB Martinique Fort-de-France 1100 432900 NA .mq EUR Euro 596 ##### ^(\d{5})$ fr-MQ 3570311 +MR MR MRT 478 MR Mauritania Nouakchott 1030700 3205060 AF .mr MRO Ouguiya 222 ar-MR,fuc,snk,fr,mey,wo 2378080 SN,DZ,EH,ML +MS MS MSR 500 MH Montserrat Plymouth 102 9341 NA .ms XCD Dollar +1-664 en-MS 3578097 +MT MT MLT 470 MT Malta Valletta 316 403000 EU .mt EUR Euro 356 @@@ #### ^[A-Z]{3}\s?\d{4}$ mt,en-MT 2562770 +MU MU MUS 480 MP Mauritius Port Louis 2040 1294104 AF .mu MUR Rupee 230 en-MU,bho,fr 934292 +MV MV MDV 462 MV Maldives Male 300 395650 AS .mv MVR Rufiyaa 960 ##### ^(\d{5})$ dv,en 1282028 +MW MW MWI 454 MI Malawi Lilongwe 118480 15447500 AF .mw MWK Kwacha 265 ny,yao,tum,swk 927384 TZ,MZ,ZM +MX MX MEX 484 MX Mexico Mexico City 1972550 112468855 NA .mx MXN Peso 52 ##### ^(\d{5})$ es-MX 3996063 GT,US,BZ +MY MY MYS 458 MY Malaysia Kuala Lumpur 329750 28274729 AS .my MYR Ringgit 60 ##### ^(\d{5})$ ms-MY,en,zh,ta,te,ml,pa,th 1733045 BN,TH,ID +MZ MZ MOZ 508 MZ Mozambique Maputo 801590 22061451 AF .mz MZN Metical 258 #### ^(\d{4})$ pt-MZ,vmw 1036973 ZW,TZ,SZ,ZA,ZM,MW +NA NA NAM 516 WA Namibia Windhoek 825418 2128471 AF .na NAD Dollar 264 en-NA,af,de,hz,naq 3355338 ZA,BW,ZM,AO +NC NC NCL 540 NC New Caledonia Noumea 19060 216494 OC .nc XPF Franc 687 ##### ^(\d{5})$ fr-NC 2139685 +NE NE NER 562 NG Niger Niamey 1267000 15878271 AF .ne XOF Franc 227 #### ^(\d{4})$ fr-NE,ha,kr,dje 2440476 TD,BJ,DZ,LY,BF,NG,ML +NF NF NFK 574 NF Norfolk Island Kingston 34.6 1828 OC .nf AUD Dollar 672 #### ^(\d{4})$ en-NF 2155115 +NG NG NGA 566 NI Nigeria Abuja 923768 154000000 AF .ng NGN Naira 234 ###### ^(\d{6})$ en-NG,ha,yo,ig,ff 2328926 TD,NE,BJ,CM +NI NI NIC 558 NU Nicaragua Managua 129494 5995928 NA .ni NIO Cordoba 505 ###-###-# ^(\d{7})$ es-NI,en 3617476 CR,HN +NL NL NLD 528 NL Netherlands Amsterdam 41526 16645000 EU .nl EUR Euro 31 #### @@ ^(\d{4}[A-Z]{2})$ nl-NL,fy-NL 2750405 DE,BE +NO NO NOR 578 NO Norway Oslo 324220 5009150 EU .no NOK Krone 47 #### ^(\d{4})$ no,nb,nn,se,fi 3144096 FI,RU,SE +NP NP NPL 524 NP Nepal Kathmandu 140800 28951852 AS .np NPR Rupee 977 ##### ^(\d{5})$ ne,en 1282988 CN,IN +NR NR NRU 520 NR Nauru Yaren 21 10065 OC .nr AUD Dollar 674 na,en-NR 2110425 +NU NU NIU 570 NE Niue Alofi 260 2166 OC .nu NZD Dollar 683 niu,en-NU 4036232 +NZ NZ NZL 554 NZ New Zealand Wellington 268680 4252277 OC .nz NZD Dollar 64 #### ^(\d{4})$ en-NZ,mi 2186224 +OM OM OMN 512 MU Oman Muscat 212460 2967717 AS .om OMR Rial 968 ### ^(\d{3})$ ar-OM,en,bal,ur 286963 SA,YE,AE +PA PA PAN 591 PM Panama Panama City 78200 3410676 NA .pa PAB Balboa 507 es-PA,en 3703430 CR,CO +PE PE PER 604 PE Peru Lima 1285220 29907003 SA .pe PEN Sol 51 es-PE,qu,ay 3932488 EC,CL,BO,BR,CO +PF PF PYF 258 FP French Polynesia Papeete 4167 270485 OC .pf XPF Franc 689 ##### ^((97|98)7\d{2})$ fr-PF,ty 4030656 +PG PG PNG 598 PP Papua New Guinea Port Moresby 462840 6064515 OC .pg PGK Kina 675 ### ^(\d{3})$ en-PG,ho,meu,tpi 2088628 ID +PH PH PHL 608 RP Philippines Manila 300000 99900177 AS .ph PHP Peso 63 #### ^(\d{4})$ tl,en-PH,fil 1694008 +PK PK PAK 586 PK Pakistan Islamabad 803940 184404791 AS .pk PKR Rupee 92 ##### ^(\d{5})$ ur-PK,en-PK,pa,sd,ps,brh 1168579 CN,AF,IR,IN +PL PL POL 616 PL Poland Warsaw 312685 38500000 EU .pl PLN Zloty 48 ##-### ^\d{2}-\d{3}$ pl 798544 DE,LT,SK,CZ,BY,UA,RU +PM PM SPM 666 SB Saint Pierre and Miquelon Saint-Pierre 242 7012 NA .pm EUR Euro 508 ##### ^(97500)$ fr-PM 3424932 +PN PN PCN 612 PC Pitcairn Adamstown 47 46 OC .pn NZD Dollar 870 en-PN 4030699 +PR PR PRI 630 RQ Puerto Rico San Juan 9104 3916632 NA .pr USD Dollar +1-787 and 1-939 #####-#### ^00[679]\d{2}(?:-\d{4})?$ en-PR,es-PR 4566966 +PS PS PSE 275 WE Palestinian Territory East Jerusalem 5970 3800000 AS .ps ILS Shekel 970 ar-PS 6254930 JO,IL,EG +PT PT PRT 620 PO Portugal Lisbon 92391 10676000 EU .pt EUR Euro 351 ####-### ^\d{4}-\d{3}\s?[a-zA-Z]{0,25}$ pt-PT,mwl 2264397 ES +PW PW PLW 585 PS Palau Melekeok 458 19907 OC .pw USD Dollar 680 96940 ^(96940)$ pau,sov,en-PW,tox,ja,fil,zh 1559582 +PY PY PRY 600 PA Paraguay Asuncion 406750 6375830 SA .py PYG Guarani 595 #### ^(\d{4})$ es-PY,gn 3437598 BO,BR,AR +QA QA QAT 634 QA Qatar Doha 11437 840926 AS .qa QAR Rial 974 ar-QA,es 289688 SA +RE RE REU 638 RE Reunion Saint-Denis 2517 776948 AF .re EUR Euro 262 ##### ^((97|98)(4|7|8)\d{2})$ fr-RE 935317 +RO RO ROU 642 RO Romania Bucharest 237500 21959278 EU .ro RON Leu 40 ###### ^(\d{6})$ ro,hu,rom 798549 MD,HU,UA,BG,RS +RS RS SRB 688 RI Serbia Belgrade 88361 7344847 EU .rs RSD Dinar 381 ###### ^(\d{6})$ sr,hu,bs,rom 6290252 AL,HU,MK,RO,HR,BA,BG,ME,XK +RU RU RUS 643 RS Russia Moscow 17100000 140702000 EU .ru RUB Ruble 7 ###### ^(\d{6})$ ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,tut,kbd,krc,av,sah,nog 2017370 GE,CN,BY,UA,KZ,LV,PL,EE,LT,FI,MN,NO,AZ,KP +RW RW RWA 646 RW Rwanda Kigali 26338 11055976 AF .rw RWF Franc 250 rw,en-RW,fr-RW,sw 49518 TZ,CD,BI,UG +SA SA SAU 682 SA Saudi Arabia Riyadh 1960582 25731776 AS .sa SAR Rial 966 ##### ^(\d{5})$ ar-SA 102358 QA,OM,IQ,YE,JO,AE,KW +SB SB SLB 090 BP Solomon Islands Honiara 28450 559198 OC .sb SBD Dollar 677 en-SB,tpi 2103350 +SC SC SYC 690 SE Seychelles Victoria 455 88340 AF .sc SCR Rupee 248 en-SC,fr-SC 241170 +SD SD SDN 729 SU Sudan Khartoum 1861484 35000000 AF .sd SDG Pound 249 ##### ^(\d{5})$ ar-SD,en,fia 366755 SS,TD,EG,ET,ER,LY,CF +SS SS SSD 728 OD South Sudan Juba 644329 8260490 AF SSP Pound 211 en 7909807 CD,CF,ET,KE,SD,UG +SE SE SWE 752 SW Sweden Stockholm 449964 9828655 EU .se SEK Krona 46 ### ## ^(?:SE)?\d{3}\s\d{2}$ sv-SE,se,sma,fi-SE 2661886 NO,FI +SG SG SGP 702 SN Singapore Singapore 692.7 4701069 AS .sg SGD Dollar 65 ###### ^(\d{6})$ cmn,en-SG,ms-SG,ta-SG,zh-SG 1880251 +SH SH SHN 654 SH Saint Helena Jamestown 410 7460 AF .sh SHP Pound 290 STHL 1ZZ ^(STHL1ZZ)$ en-SH 3370751 +SI SI SVN 705 SI Slovenia Ljubljana 20273 2007000 EU .si EUR Euro 386 #### ^(?:SI)*(\d{4})$ sl,sh 3190538 HU,IT,HR,AT +SJ SJ SJM 744 SV Svalbard and Jan Mayen Longyearbyen 62049 2550 EU .sj NOK Krone 47 #### ^(\d{4})$ no,ru 607072 +SK SK SVK 703 LO Slovakia Bratislava 48845 5455000 EU .sk EUR Euro 421 ### ## ^\d{3}\s?\d{2}$ sk,hu 3057568 PL,HU,CZ,UA,AT +SL SL SLE 694 SL Sierra Leone Freetown 71740 5245695 AF .sl SLL Leone 232 en-SL,men,tem 2403846 LR,GN +SM SM SMR 674 SM San Marino San Marino 61.2 31477 EU .sm EUR Euro 378 4789# ^(4789\d)$ it-SM 3168068 IT +SN SN SEN 686 SG Senegal Dakar 196190 12323252 AF .sn XOF Franc 221 ##### ^(\d{5})$ fr-SN,wo,fuc,mnk 2245662 GN,MR,GW,GM,ML +SO SO SOM 706 SO Somalia Mogadishu 637657 10112453 AF .so SOS Shilling 252 @@ ##### ^([A-Z]{2}\d{5})$ so-SO,ar-SO,it,en-SO 51537 ET,KE,DJ +SR SR SUR 740 NS Suriname Paramaribo 163270 492829 SA .sr SRD Dollar 597 nl-SR,en,srn,hns,jv 3382998 GY,BR,GF +ST ST STP 678 TP Sao Tome and Principe Sao Tome 1001 175808 AF .st STD Dobra 239 pt-ST 2410758 +SV SV SLV 222 ES El Salvador San Salvador 21040 6052064 NA .sv USD Dollar 503 CP #### ^(?:CP)*(\d{4})$ es-SV 3585968 GT,HN +SX SX SXM 534 NN Sint Maarten Philipsburg 21 37429 NA .sx ANG Guilder 599 nl,en 7609695 MF +SY SY SYR 760 SY Syria Damascus 185180 22198110 AS .sy SYP Pound 963 ar-SY,ku,hy,arc,fr,en 163843 IQ,JO,IL,TR,LB +SZ SZ SWZ 748 WZ Swaziland Mbabane 17363 1354051 AF .sz SZL Lilangeni 268 @### ^([A-Z]\d{3})$ en-SZ,ss-SZ 934841 ZA,MZ +TC TC TCA 796 TK Turks and Caicos Islands Cockburn Town 430 20556 NA .tc USD Dollar +1-649 TKCA 1ZZ ^(TKCA 1ZZ)$ en-TC 3576916 +TD TD TCD 148 CD Chad N'Djamena 1284000 10543464 AF .td XAF Franc 235 fr-TD,ar-TD,sre 2434508 NE,LY,CF,SD,CM,NG +TF TF ATF 260 FS French Southern Territories Port-aux-Francais 7829 140 AN .tf EUR Euro fr 1546748 +TG TG TGO 768 TO Togo Lome 56785 6587239 AF .tg XOF Franc 228 fr-TG,ee,hna,kbp,dag,ha 2363686 BJ,GH,BF +TH TH THA 764 TH Thailand Bangkok 514000 67089500 AS .th THB Baht 66 ##### ^(\d{5})$ th,en 1605651 LA,MM,KH,MY +TJ TJ TJK 762 TI Tajikistan Dushanbe 143100 7487489 AS .tj TJS Somoni 992 ###### ^(\d{6})$ tg,ru 1220409 CN,AF,KG,UZ +TK TK TKL 772 TL Tokelau 10 1466 OC .tk NZD Dollar 690 tkl,en-TK 4031074 +TL TL TLS 626 TT East Timor Dili 15007 1154625 OC .tl USD Dollar 670 tet,pt-TL,id,en 1966436 ID +TM TM TKM 795 TX Turkmenistan Ashgabat 488100 4940916 AS .tm TMT Manat 993 ###### ^(\d{6})$ tk,ru,uz 1218197 AF,IR,UZ,KZ +TN TN TUN 788 TS Tunisia Tunis 163610 10589025 AF .tn TND Dinar 216 #### ^(\d{4})$ ar-TN,fr 2464461 DZ,LY +TO TO TON 776 TN Tonga Nuku'alofa 748 122580 OC .to TOP Pa'anga 676 to,en-TO 4032283 +TR TR TUR 792 TU Turkey Ankara 780580 77804122 AS .tr TRY Lira 90 ##### ^(\d{5})$ tr-TR,ku,diq,az,av 298795 SY,GE,IQ,IR,GR,AM,AZ,BG +TT TT TTO 780 TD Trinidad and Tobago Port of Spain 5128 1228691 NA .tt TTD Dollar +1-868 en-TT,hns,fr,es,zh 3573591 +TV TV TUV 798 TV Tuvalu Funafuti 26 10472 OC .tv AUD Dollar 688 tvl,en,sm,gil 2110297 +TW TW TWN 158 TW Taiwan Taipei 35980 22894384 AS .tw TWD Dollar 886 ##### ^(\d{5})$ zh-TW,zh,nan,hak 1668284 +TZ TZ TZA 834 TZ Tanzania Dodoma 945087 41892895 AF .tz TZS Shilling 255 sw-TZ,en,ar 149590 MZ,KE,CD,RW,ZM,BI,UG,MW +UA UA UKR 804 UP Ukraine Kiev 603700 45415596 EU .ua UAH Hryvnia 380 ##### ^(\d{5})$ uk,ru-UA,rom,pl,hu 690791 PL,MD,HU,SK,BY,RO,RU +UG UG UGA 800 UG Uganda Kampala 236040 33398682 AF .ug UGX Shilling 256 en-UG,lg,sw,ar 226074 TZ,KE,SS,CD,RW +UM UM UMI 581 United States Minor Outlying Islands 0 0 OC .um USD Dollar 1 en-UM 5854968 +US US USA 840 US United States Washington 9629091 310232863 NA .us USD Dollar 1 #####-#### ^\d{5}(-\d{4})?$ en-US,es-US,haw,fr 6252001 CA,MX,CU +UY UY URY 858 UY Uruguay Montevideo 176220 3477000 SA .uy UYU Peso 598 ##### ^(\d{5})$ es-UY 3439705 BR,AR +UZ UZ UZB 860 UZ Uzbekistan Tashkent 447400 27865738 AS .uz UZS Som 998 ###### ^(\d{6})$ uz,ru,tg 1512440 TM,AF,KG,TJ,KZ +VA VA VAT 336 VT Vatican Vatican City 0.44 921 EU .va EUR Euro 379 ##### ^(\d{5})$ la,it,fr 3164670 IT +VC VC VCT 670 VC Saint Vincent and the Grenadines Kingstown 389 104217 NA .vc XCD Dollar +1-784 en-VC,fr 3577815 +VE VE VEN 862 VE Venezuela Caracas 912050 27223228 SA .ve VEF Bolivar 58 #### ^(\d{4})$ es-VE 3625428 GY,BR,CO +VG VG VGB 092 VI British Virgin Islands Road Town 153 21730 NA .vg USD Dollar +1-284 en-VG 3577718 +VI VI VIR 850 VQ U.S. Virgin Islands Charlotte Amalie 352 108708 NA .vi USD Dollar +1-340 #####-#### ^008\d{2}(?:-\d{4})?$ en-VI 4796775 +VN VN VNM 704 VM Vietnam Hanoi 329560 89571130 AS .vn VND Dong 84 ###### ^(\d{6})$ vi,en,fr,zh,km 1562822 CN,LA,KH +VU VU VUT 548 NH Vanuatu Port Vila 12200 221552 OC .vu VUV Vatu 678 bi,en-VU,fr-VU 2134431 +WF WF WLF 876 WF Wallis and Futuna Mata Utu 274 16025 OC .wf XPF Franc 681 ##### ^(986\d{2})$ wls,fud,fr-WF 4034749 +WS WS WSM 882 WS Samoa Apia 2944 192001 OC .ws WST Tala 685 sm,en-WS 4034894 +YE YE YEM 887 YM Yemen Sanaa 527970 23495361 AS .ye YER Rial 967 ar-YE 69543 SA,OM +YT YT MYT 175 MF Mayotte Mamoudzou 374 159042 AF .yt EUR Euro 262 ##### ^(\d{5})$ fr-YT 1024031 +ZA ZA ZAF 710 SF South Africa Pretoria 1219912 49000000 AF .za ZAR Rand 27 #### ^(\d{4})$ zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr 953987 ZW,SZ,MZ,BW,NA,LS +ZM ZM ZMB 894 ZA Zambia Lusaka 752614 13460305 AF .zm ZMW Kwacha 260 ##### ^(\d{5})$ en-ZM,bem,loz,lun,lue,ny,toi 895949 ZW,TZ,MZ,CD,NA,MW,AO +ZW ZW ZWE 716 ZI Zimbabwe Harare 390580 13061000 AF .zw ZWL Dollar 263 en-ZW,sn,nr,nd 878675 ZA,MZ,BW,ZM +CS CS SCG 891 YI Serbia and Montenegro Belgrade 102350 10829175 EU .cs RSD Dinar 381 ##### ^(\d{5})$ cu,hu,sq,sr 8505033 AL,HU,MK,RO,HR,BA,BG +AN AN ANT 530 NT Netherlands Antilles Willemstad 960 300000 NA .an ANG Guilder 599 nl-AN,en,es 8505032 GP diff --git a/share/db/country.sql b/share/db/country.sql new file mode 100644 index 00000000..f5d13655 --- /dev/null +++ b/share/db/country.sql @@ -0,0 +1,48 @@ +-- ISO +-- ISO3 +-- ISO-Numeric +-- fips +-- Country +-- Capital +-- Area(in sq km) +-- Population +-- Continent +-- tld +-- CurrencyCode +-- CurrencyName +-- Phone +-- Postal Code Format +-- Postal Code Regex +-- Languages +-- geonameid +-- neighbours +-- EquivalentFipsCode +DROP TABLE IF EXISTS country; +CREATE TABLE IF NOT EXISTS country ( + id varchar(2), + iso varchar(2), + iso3 varchar(3), + isonum varchar(3), + fips varchar(2), + name varchar(50), + capital varchar(30), + area_km varchar(9), + population bigint, + continent varchar(2), + tld varchar(10), + currency_code varchar(3), + currency_name varchar(20), + phone varchar(30), + zip_format varchar(60), + zip_regexp varchar(150), + languages varchar(100), + geonameid integer, + neighbours varchar(60), + eqfips varchar(2) + -- PRIMARY KEY(id,country) +); +BEGIN TRANSACTION; +DELETE FROM country; +.import "country.csv" country +COMMIT; + diff --git a/share/db/nb.db b/share/db/nb.db index 8566e99b8af1e8e8b0945d885662e02643f9c184..9ba4eb4536ef7010605654af370de7ba1ecde0f8 100644 GIT binary patch delta 37359 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 delta 7255 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 && cat *.sql` `./port > "$TMP/port.csv" && csv2table port "$TMP/port.csv"` `./shell_function` @@ -37,6 +41,12 @@ done rm -rf "$TMP" } +update_csv() { + local t=$1 + ./$t > $TMP/$t.csv + [ -s $TMP/$t.csv ] && mv $TMP/$t.csv $t.csv && echo Update $t.csv 1>&2 +} + csv2table() { local name="$1"; shift local file="$1"; shift diff --git a/share/sql/country.sql b/share/sql/country.sql index 08e61bf4..34cd69b2 100644 --- a/share/sql/country.sql +++ b/share/sql/country.sql @@ -24,21 +24,21 @@ CREATE TABLE IF NOT EXISTS country ( iso3 varchar(3), isonum varchar(3), fips varchar(2), - name varchar(200), - capital varchar(200), - area_km varchar(200), + name varchar(50), + capital varchar(30), + area_km varchar(9), population bigint, - continent varchar(200), - tld varchar(200), - currency_code varchar(200), - currency_name varchar(200), - phone varchar(200), - zip_formaat varchar(200), - zip_regexp varchar(200), - languages varchar(200), - geonameid varchar(200), - neighbours varchar(200), - eqfips varchar(200) + continent varchar(2), + tld varchar(10), + currency_code varchar(3), + currency_name varchar(20), + phone varchar(30), + zip_format varchar(60), + zip_regexp varchar(150), + languages varchar(100), + geonameid integer, + neighbours varchar(60), + eqfips varchar(2) -- PRIMARY KEY(id,country) ); GRANT ALL ON ALL TABLES IN SCHEMA public TO www; diff --git a/www/dbq/html/default.css b/www/dbq/html/default.css index 239f5503..2dfb5908 100644 --- a/www/dbq/html/default.css +++ b/www/dbq/html/default.css @@ -159,6 +159,7 @@ table.rows td { padding: 0.3em 0.3em; } +table.rows.fixed th, table.rows.fixed td { white-space: nowrap; @@ -166,6 +167,19 @@ table.rows.fixed td overflow: hidden; } +table.rows.fixed th { + white-space: normal; +} + +/* +table.rows.fixed th:hover, +table.rows.fixed td:hover { + overflow: inherit; + text-overflow: inherit; + z-index: 9; +} +*/ + table.rows td.view, table.rows td.delete { width: 1%; -- 2.47.3