Data · PostgreSQL
数据抓取与数据库详情
查看 nextfinance 模式中的存量、按来源汇总与货币对覆盖,便于判断何时需要执行 npm run nf-ingest 或检查 PM2 定时任务 nextfinance-ingest。
连接与抓取摘要
- 库表模式:nextfinance(PostgreSQL)
- 汇率即期(Frankfurter):已有入库,最近即期日期 2026-04-16
- 宏观指标(World Bank):已有入库,最近写入 2026-04-17 00:25:54.697046+00(created_at)
- NextLab ADB(trade_lab.adb_data):已镜像至 nf_indicator(source=adb_trade_lab),最近写入 2026-04-17 00:26:12.468123+00
- 实时 JSON:GET /api/nf/data-status(供脚本或看板拉取同结构数据)
表结构与用途(教学库)
完整 DDL 见仓库 sql/nextfinance_schema.sql;种子数据 sql/nextfinance_seed.sql。
| 表 | 用途 | 与分析页的关联 |
|---|---|---|
| nf_country | 国家主数据(ISO2、中英文、区域) | 国家画像 列表与 API 国家码 |
| nf_indicator | 分国分指标时间序列(多 source 可并存) | /api/nf/profile/[code] 覆盖 JSON 示意值(worldbank 优先于 adb_trade_lab 与 demo) |
| nf_fx_spot | 即期汇率(按日、来源) | 汇率工作台 与示意序列拼接 |
| nf_policy_scenario | 政策情景 JSON 与评估(可扩展存档) | 政策引擎 实验记录(当前以计算为主) |
当前存量
nf_country
64
AF, AM, AU, AZ, BD, BG, BN, BR, BT, CA, CK, CN, CO, DE, FJ, FM, FR, GB, GE, HK, ID, IN, IT, JP, KG, KH, KI, KR, KZ, LA, LK, MD, MH, MM, MN, MO, MV, MY, NP, NR, NU, NZ, PG, PH, PK, PL, PW, RU, SB, SG, SL, TH, TJ, TL, TM, TO, TR, TV, TW, US, UZ, VN, VU, WS
nf_fx_spot
313
按来源与货币对见下表
nf_indicator
20332
含 demo / worldbank 等
nf_policy_scenario
0
情景存档条数
nf_fx_spot · 按来源
| source | 行数 | 最近 as_of_date |
|---|---|---|
| demo | 3 | 2025-03-15 |
| frankfurter | 310 | 2026-04-16 |
nf_fx_spot · 按货币对
| base / quote | 行数 | 最近日期 |
|---|---|---|
| EUR / USD | 10 | 2026-04-16 |
| USD / AUD | 9 | 2026-04-16 |
| USD / CHF | 9 | 2026-04-16 |
| USD / CNY | 84 | 2026-04-16 |
| USD / EUR | 83 | 2026-04-16 |
| USD / GBP | 9 | 2026-04-16 |
| USD / HKD | 9 | 2026-04-16 |
| USD / IDR | 9 | 2026-04-16 |
| USD / INR | 9 | 2026-04-16 |
| USD / JPY | 10 | 2026-04-16 |
| USD / KRW | 9 | 2026-04-16 |
| USD / MYR | 9 | 2026-04-16 |
| USD / NOK | 9 | 2026-04-16 |
| USD / NZD | 9 | 2026-04-16 |
| USD / PHP | 9 | 2026-04-16 |
| USD / SEK | 9 | 2026-04-16 |
| USD / SGD | 9 | 2026-04-16 |
| USD / THB | 9 | 2026-04-16 |
nf_indicator · 按来源与指标键
| source | 行数 | 最近 created_at |
|---|---|---|
| adb_trade_lab | 20178 | 2026-04-17 00:26:12.468123+00 |
| demo | 20 | 2026-04-05 03:22:29.254414+00 |
| worldbank | 134 | 2026-04-17 00:25:54.697046+00 |
| indicator_key | 行数 |
|---|---|
| adb_10_1_1___growth_rates_of_househo | 29 |
| adb_10_1_1__growth_rates_of_househo | 17 |
| adb_11_6_2___annual_mean_of_fine_par | 47 |
| adb_11_6_2__annual_mean_of_fine_par | 43 |
| adb_12_2_1___material_footprint | 99 |
| adb_12_2_1__material_footprint | 35 |
| adb_12_2_2___domestic_material_consu | 140 |
| adb_12_2_2__domestic_material_consu | 49 |
| adb_13_1_1__number_of_persons_affec | 38 |
| adb_14_5_1___average_proportion_of_m | 65 |
| adb_14_5_1__average_proportion_of_m | 29 |
| adb_15_1_1___forest_area_as_a_propor | 50 |
| adb_15_1_1__forest_area_as_a_propor | 44 |
| adb_16_9_1___proportion_of_children | 44 |
| adb_16_9_1__proportion_of_children | 34 |
| adb_17_4_1___debt_service_as_a_perce | 61 |
| adb_17_4_1__debt_service_as_a_perce | 31 |
| adb_1_1_1__proportion_of_population | 28 |
| adb_1_1_1b___proportion_of_employed | 95 |
| adb_1_1_1b__proportion_of_employed | 62 |
| adb_1_2_1___proportion_of_population | 33 |
| adb_1_2_1__proportion_of_population | 32 |
| adb_2_1_1___prevalence_of_undernouri | 55 |
| adb_2_1_1__prevalence_of_undernouri | 25 |
| adb_2_2_1___prevalence_of_stunting_a | 80 |
| adb_2_2_1__prevalence_of_stunting_a | 40 |
| adb_2_2_2___prevalence_of_malnutriti | 111 |
| adb_2_2_2__prevalence_of_malnutriti | 73 |
| adb_3_1_1___maternal_mortality_ratio | 46 |
| adb_3_1_1__maternal_mortality_ratio | 41 |
| adb_3_2_1___under_5_mortality_rate | 92 |
| adb_3_2_1__under_5_mortality_rate | 46 |
| adb_3_2_2___neonatal_mortality_rate | 95 |
| adb_3_2_2__neonatal_mortality_rate | 46 |
| adb_3_3_2___tuberculosis_incidence | 95 |
| adb_3_3_2__tuberculosis_incidence | 46 |
| adb_3_4_1___mortality_rate_attribute | 42 |
| adb_3_4_1__mortality_rate_attribute | 40 |
| adb_4_2_2___participation_rate_in_or | 70 |
| adb_4_2_2__participation_rate_in_or | 43 |
| adb_4_c_1___proportion_of_teachers_w | 87 |
| adb_4_c_1__proportion_of_teachers_w | 53 |
| adb_5_5_1___proportion_of_seats_held | 86 |
| adb_5_5_1__proportion_of_seats_held | 45 |
| adb_6_1_1___proportion_of_population | 68 |
| adb_6_1_1__proportion_of_population | 35 |
| adb_6_2_1a___proportion_of_populatio | 58 |
| adb_6_2_1a__proportion_of_populatio | 32 |
| adb_6_2_1b___proportion_of_populatio | 63 |
| adb_6_2_1b__proportion_of_populatio | 36 |
| adb_7_1_1___proportion_of_population | 90 |
| adb_7_1_1__proportion_of_population | 45 |
| adb_7_2_1___renewable_energy_share_i | 92 |
| adb_7_2_1__renewable_energy_share_i | 46 |
| adb_8_10_1___number_of_atms | 74 |
| adb_8_10_1___number_of_commercial_ba | 74 |
| adb_8_10_1__number_of_automated_tel | 40 |
| adb_8_10_1__number_of_commercial_ba | 39 |
| adb_8_10_2___proportion_of_adults__1 | 32 |
| adb_8_10_2__proportion_of_adults__1 | 30 |
| adb_8_5_2___unemployment_rate__by_se | 64 |
| adb_8_5_2__unemployment_rate__by_se | 41 |
| adb_9_4_1___carbon_dioxide__co2__emi | 56 |
| adb_9_4_1__carbon_dioxide__co2__emi | 28 |
| adb_9_a_1___total_official_flows_for | 84 |
| adb_9_a_1__total_official_flows_for | 47 |
| adb_9_c_1___proportion_of_population | 87 |
| adb_9_c_1__proportion_of_population | 49 |
| adb_adolescent_birthrate__aged_15_19 | 37 |
| adb_age_dependency | 356 |
| adb_annual_change__in_money_supply | 38 |
| adb_annual_change_in_money_supply | 304 |
| adb_annual_real_growth_rates_on_valu | 327 |
| adb_average_annual_mean_of_particula | 88 |
| adb_bm.gsr.gnfs.cd | 40 |
| adb_bn.cab.xoka.cd | 40 |
| adb_bn.cab.xoka.gd.zs | 108 |
| adb_bx.gsr.gnfs.cd | 40 |
| adb_bx.klt.dinv.cd.wd | 120 |
| adb_bx.trf.pwkr.dt.gd.zs | 42 |
| adb_carbon_dioxide__co2__emissions | 29 |
| adb_central_government_finance__expe | 90 |
| adb_central_government_finance__fisc | 90 |
| adb_central_government_finance__reve | 90 |
| adb_co2_emissions | 57 |
| adb_co2_emissions__million_metric_to | 80 |
| adb_coverage_of_protected_areas_in_r | 135 |
| adb_cpi_inflation | 406 |
| adb_current_account_balance | 324 |
| adb_death_rate_due_to_road_traffic_i | 43 |
| adb_debt_gdp | 204 |
| adb_debt_ratio | 98 |
| adb_debt_service_as_a_percentage_of | 178 |
| adb_domestic_material_consumption | 85 |
| adb_domestic_material_consumption__m | 86 |
| adb_domestic_material_consumption__p | 85 |
| adb_dt.dod.dect.cd | 46 |
| adb_dt.dod.dect.gn.zs | 108 |
| adb_eg.use.elec.kh.pc | 35 |
| adb_fdi_usd | 110 |
| adb_fi.res.totl.cd | 40 |
| adb_fixed_broadband_subscriptions__p | 45 |
| adb_fm.lbl.bmny.gd.zs | 34 |
| adb_forest_area_as_a_proportion_of_t | 97 |
| adb_fp.cpi.totl.zg | 101 |
| adb_fr.inr.lend | 24 |
| adb_gdp_usd | 110 |
| adb_gdp_usd_level | 500 |
| adb_gini | 27 |
| adb_gni_pcap | 384 |
| adb_government_finance___expenditure | 46 |
| adb_government_finance___fiscal_bala | 46 |
| adb_government_finance___revenue | 46 |
| adb_government_finance__expenditure | 226 |
| adb_government_finance__fiscal_balan | 187 |
| adb_government_finance__revenue | 226 |
| adb_gross_domestic_investment | 246 |
| adb_gross_international_reserves | 319 |
| adb_growth_rate_of_merchandise_expor | 389 |
| adb_growth_rate_of_merchandise_impor | 386 |
| adb_growth_rates_of_household_expend | 60 |
| adb_incidence_of_malaria__per_1_000 | 26 |
| adb_infant_mortality_rate__per_1_000 | 45 |
| adb_is.rrs.totl.km | 21 |
| adb_it.cel.sets.p2 | 37 |
| adb_it.net.user.zs | 68 |
| adb_material_footprint | 62 |
| adb_material_footprint__million_metr | 77 |
| adb_material_footprint__per_capita | 77 |
| adb_maternal_mortality_ratio | 89 |
| adb_maternal_mortality_ratio__per_10 | 40 |
| adb_mortality_rate_attributed_to_car | 150 |
| adb_mortality_rate_attributed_to_hou | 43 |
| adb_mortality_rate_attributed_to_uns | 40 |
| adb_ne.con.totl.zs | 41 |
| adb_ne.exp.gnfs.zs | 119 |
| adb_ne.gdi.totl.zs | 41 |
| adb_neonatal_mortality_rate | 228 |
| adb_neonatal_mortality_rate__per_1_0 | 44 |
| adb_number_of_atms | 143 |
| adb_number_of_atms__per_100_000_adul | 40 |
| adb_number_of_automated_teller_machi | 40 |
| adb_number_of_commercial_bank_branch | 202 |
| adb_number_of_new_hiv_infections__pe | 21 |
| adb_nv.agr.totl.zs | 47 |
| adb_nv.ind.totl.zs | 47 |
| adb_nv.srv.totl.zs | 47 |
| adb_ny.gdp.mktp.cd | 120 |
| adb_ny.gdp.mktp.kd.zg | 120 |
| adb_ny.gdp.pcap.cd | 120 |
| adb_pa.nus.fcrf | 42 |
| adb_participation_rate_in_organized | 147 |
| adb_pop_growth | 432 |
| adb_population | 364 |
| adb_population_density | 363 |
| adb_population_density__persons_per | 45 |
| adb_prevalence_of_malnutrition__over | 72 |
| adb_prevalence_of_malnutrition__wast | 72 |
| adb_prevalence_of_stunting_among_chi | 71 |
| adb_prevalence_of_undernourishment | 140 |
| adb_proportion_of_adults__15_years_a | 59 |
| adb_proportion_of_births_attended_by | 33 |
| adb_proportion_of_children_under_5_y | 75 |
| adb_proportion_of_employed_populatio | 145 |
| adb_proportion_of_individuals_using | 44 |
| adb_proportion_of_population_below | 113 |
| adb_proportion_of_population_covered | 239 |
| adb_proportion_of_population_living | 147 |
| adb_proportion_of_population_using_a | 31 |
| adb_proportion_of_population_using_i | 45 |
| adb_proportion_of_population_using_s | 106 |
| adb_proportion_of_population_with_ac | 227 |
| adb_proportion_of_seats_held_by_wome | 245 |
| adb_proportion_of_teachers_who_have | 126 |
| adb_proportion_of_teachers_with_the | 87 |
| adb_proportion_of_urban_population_l | 15 |
| adb_proportion_of_women_married_or_i | 22 |
| adb_proportion_of_youth__aged_15_24 | 40 |
| adb_px.rex.reer | 12 |
| adb_renewable_energy_share_in_the_to | 224 |
| adb_renewal_energy_share_in_the_tota | 41 |
| adb_si.pov.dday | 29 |
| adb_si.pov.gini | 29 |
| adb_sl.tlf.cact.zs | 48 |
| adb_sl.uem.totl.zs | 48 |
| adb_sp.dyn.le00.in | 40 |
| adb_sp.pop.totl | 48 |
| adb_sp.urb.totl.in.zs | 48 |
| adb_surface_area | 180 |
| adb_total_fertility_rate | 254 |
| adb_total_fertility_rate__births_per | 45 |
| adb_total_official_flows_for_infrast | 243 |
| adb_total_outstanding | 44 |
| adb_total_outstanding_debt | 196 |
| adb_trade_balance | 319 |
| adb_trade_openness | 109 |
| adb_tuberculosis_incidence | 226 |
| adb_tuberculosis_incidence__per_100 | 44 |
| adb_under_5_mortality_rate | 223 |
| adb_under_5_mortality_rate__per_1_00 | 43 |
| adb_unemployment_rate__by_sex__femal | 76 |
| adb_unemployment_rate__by_sex__male | 76 |
| adb_unemployment_rate__by_sex__total | 96 |
| adb_unemployment_rate__female | 111 |
| adb_unemployment_rate__male | 111 |
| adb_unemployment_rate__total | 113 |
| adb_value_added__agriculture_annual | 43 |
| adb_value_added__industry_annual_gro | 44 |
| adb_value_added__services_annual_gro | 43 |
| current_account_pct_gdp | 28 |
| external_debt_pct_gdp | 1 |
| fdi_net_usd_bn | 1 |
| gdp_real_growth_pct | 32 |
| inflation_cpi_pct | 30 |
| policy_rate_pct | 5 |
| portfolio_net_usd_bn | 1 |
| reserves_usd_bn | 29 |
| trade_share_gdp_pct | 27 |
与 NextLab trade_lab 衔接
NextLab 侧 PostgreSQL 库 trade_lab 表 adb_data / adb_indicators 由 lab/data_import/import_adb.py 等脚本维护;API 路由为 GET /api/adb(trade-lab-api)。配置 TRADE_LAB_DATABASE_URL 后,nf-ingest 将把近 25 年 ADB 行写入 nextfinance.nf_indicator,指标键与 TRADE_GDP 对齐为画像字段「贸易占 GDP」。
运维命令备忘
- 手动入库:cd nextfinance && npm run nf-ingest
- PM2 定时:pm2 start ecosystem.ingest.config.cjs · 应用名 nextfinance-ingest
- 改周期后:pm2 delete nextfinance-ingest && pm2 start ecosystem.ingest.config.cjs && pm2 save