Get the data

Heads up on Original: the Commission does not publish this table on its own. It publishes Production Data Query Dump, which this was parsed out of — so Original gets you that whole file, not just this table. Every other format is this table alone.

Free. You will be asked to confirm an email address before the files are built — that is the only gate, and it is there so we can tell you when a large export is ready.

Preview the first 100 rows

What this is

One of the sixteen delimited tables inside the monthly Production Data Query dump. RRC publishes the dump as a single archive; EZRRC publishes each table inside it separately so you can take the one you need instead of a 3.6 GB zip.

65,000 fields: number, name, district, class, wildcat flag, hydrogen sulphide flag, salt dome flag, offshore code, discovery dates and the derived rule type — separately for the oil and gas schedules, because the same field can be governed differently on each.

Nothing else in the production data spells a field name out.

What you can do with it

Turn eight-digit field numbers into names, find every field discovered in a given year, and identify sour or offshore fields.

Gotchas

Almost every attribute exists twice, prefixed o_ for the oil schedule and g_ for the gas schedule. They frequently differ.

A field number is not unique across districts.

Record layout

33 columns.

pdq_og_field_dw 33 columns

Record layout for pdq_og_field_dw — 33 columns
# Column Type RRC name Meaning Lookup
1 field_no key join text The eight-digit RRC field number. The field's name is not in most files; join to the field directory to get it.
2 field_name text Field name.
3 district_no join text RRC's INTERNAL district number, 01 to 14 plus 20 for statewide. This is not the district name the industry uses: internal 07 is District 6E, 08 is 7B, 09 is 7C, 10 is District 08, 11 is 8A, 13 is 09 and 14 is District 10. Join to the district directory rather than reading it as a label. RRC district (internal number)
4 district_name text RRC district as the industry writes it, e.g. 7B, 8A, 6E.
5 field_class text Field class
6 field_h2s_flag text Field H2S flag
7 field_manual_rev_flag text Field manual rev flag
8 wildcat_flag text Wildcat flag
9 o_derived_rule_type_code text O derived rule type code
10 g_derived_rule_type_code text G derived rule type code
11 o_rescind_dt date O rescind date
12 g_rescind_dt text G rescind date
13 o_salt_dome_flag text O salt dome flag
14 g_salt_dome_flag text G salt dome flag
15 o_offshore_code text O offshore code
16 g_offshore_code text G offshore code
17 o_dont_permit text O dont permit
18 g_dont_permit text G dont permit
19 o_noa_man_rev_rule text O noa man rev rule
20 g_noa_man_rev_rule text G noa man rev rule
21 o_county_no text O county number
22 g_county_no text G county number
23 o_discovery_dt date O discovery date
24 g_discovery_dt date G discovery date
25 o_sched_remarks text O sched remarks
26 g_sched_remarks text G sched remarks
27 o_comments text O comments
28 g_comments text G comments
29 create_by text User or process that created the row in RRC's system.
30 create_dt date When the row was created in RRC's system.
31 modify_by text User or process that last changed the row in RRC's system.
32 modify_dt date When the row was last changed in RRC's system.
33 ingested_at timestamptz When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against.

Code lookups used here

Every coded column in this dataset resolves to a real lookup table, so a well code of G can be read as what it actually means.

RRC district (internal number) 14 values

Read by district_no

RRC's internal sequential district numbering, 01 to 14 plus 20 for statewide. The production data, the UIC database and the high-cost gas certifications all use this. Internal 07 is District 6E, 08 is 7B, 09 is 7C, 10 is District 08, 11 is 8A, 13 is 09 and 14 is District 10. There is no internal 12.

RRC district (internal number) — 14 codes and their meanings
CodeMeans
01 District 01 — San Antonio (internal 01) Internal district number 01, which RRC prints as District 01 and administers from San Antonio.
02 District 02 — San Antonio (internal 02) Internal district number 02, which RRC prints as District 02 and administers from San Antonio.
03 District 03 — Houston (internal 03) Internal district number 03, which RRC prints as District 03 and administers from Houston.
04 District 04 — Corpus Christi (internal 04) Internal district number 04, which RRC prints as District 04 and administers from Corpus Christi.
05 District 05 — Kilgore (internal 05) Internal district number 05, which RRC prints as District 05 and administers from Kilgore.
06 District 06 — Kilgore (internal 06) Internal district number 06, which RRC prints as District 06 and administers from Kilgore.
07 District 6E — Kilgore (internal 07) Internal district number 07, which RRC prints as District 6E and administers from Kilgore.
08 District 7B — Abilene (internal 08) Internal district number 08, which RRC prints as District 7B and administers from Abilene.
09 District 7C — San Angelo (internal 09) Internal district number 09, which RRC prints as District 7C and administers from San Angelo.
10 District 08 — Midland (internal 10) Internal district number 10, which RRC prints as District 08 and administers from Midland.
11 District 8A — Midland (internal 11) Internal district number 11, which RRC prints as District 8A and administers from Midland.
13 District 09 — Wichita Falls (internal 13) Internal district number 13, which RRC prints as District 09 and administers from Wichita Falls.
14 District 10 — Pampa (internal 14) Internal district number 14, which RRC prints as District 10 and administers from Pampa.
20 District 20 — State Wide (internal 20) Internal district number 20, which RRC prints as District 20 and administers from State Wide.

Source: Generated from texas.pdq_gp_district.district_no

What this joins to

The Railroad Commission never states these keys anywhere in the files. They are the reason the data is hard to use, so here they are with the exact columns on both sides.

PDQ Field Directory joins to Oil & Gas Field Rules on Field number — one row here matches one row there.

is the field

The field rules to the production system's field directory, on the eight-digit field number, zero-padded identically on both sides. 65,826 of the 65,836 fields with rules are in the directory, and all 65,826 directory fields have a rules row — the ten that do not match are fields RRC has designated since the directory was last cut. From there the field's monthly production is one more join: 41,144 of the 65,836 fields have a row in the PDQ field cycle table.

oil-gas-field-rules.field_number = pdq-field-directory.field_no

PDQ Field Directory joins to Statewide Field Data on District number and Field number — one row here matches one row there.

is the same field as

The FL tape's field master and PDQ's field directory are the same 65,826 fields, district for district: every fl_field row finds exactly one PDQ row and every PDQ row finds exactly one fl_field row. Both write the district as the internal number, so that half needs no translation. Worth having in both directions. PDQ carries the field name, the wildcat flag and the derived rule type; the FL tape carries the rules themselves, the allocation formula, the allowables and the monthly production. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.

statewide-field-data.district_no = pdq-field-directory.district_no AND statewide-field-data.field_no = pdq-field-directory.field_no

PDQ Field Directory joins to PDQ Field Production by Cycle on Field number — one row here matches many rows there.

totals the field

Field production is published against an eight-digit number and nothing else. The field directory is the only place the name, class, discovery date and wildcat flag live. Exact on all 5,000 sampled rows. A field that crosses a district boundary appears under more than one district, so sum across districts for a field total.

pdq-field-cycle.field_no = pdq-field-directory.field_no

PDQ Field Directory joins to Oil & Gas Field Name & Numbers on Field number = Field number text — one row here matches one row there.

is the same field as

The published name list and the production system's own field directory are the same 65,826 fields exactly: every row here finds one PDQ row and every PDQ row finds one row here. Both write the number as eight zero-padded characters, so the comparison is made as printed with no cast. They agree completely on what they share, which is itself the finding: the field name is identical on all 65,826 rows and so is the printed district. What each adds is different. PDQ carries the wildcat flag, the H2S flag and the derived rule type, and a SEPARATE county number for the oil and the gas schedule; this file carries one county code, the multi-county flag and the OIL / GAS / O & G classification. On 65,815 of the 65,826 fields the county here matches at least one of PDQ's two (33,721 the oil one, 41,853 the gas one); the eleven that match neither are the statewide WILDCAT rows whose county code is 000.

oil-gas-field-names-numbers.field_no_text = pdq-field-directory.field_no

PDQ Field Directory joins to Oil Ledger on Field number — one row here matches one row there.

is the field

The ledger's field number resolved to the field directory, which is where the field's name and class live. Measured over the whole table rather than a sample, because 33,939 rows can afford it: all 33,939 field records match a directory entry. District is deliberately not in the join, and it costs nothing to leave out. Field numbers are unique on this tape -- 33,939 numbers in 33,939 rows, none carried in two districts -- and the directory names the same district on every one of them, so adding it would neither narrow the join nor drop a row. Leaving it out also spares the reader the 06E-to-6E translation every other PDQ join here needs. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.

oil-ledger.field_no = pdq-field-directory.field_no

PDQ Field Directory joins to Gas Ledger on Field number — one row here matches one row there.

is the field

The gas ledger's field number resolved to the field directory for its name and class. All 5,000 sampled gas field records match. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.

gas-ledger.field_no = pdq-field-directory.field_no

PDQ Field Directory joins to Certificate of Authorization P-4 (Oil and Gas) on Field number — one row here matches many rows there.

is in the field

The lease's CURRENT field, resolved to a field name and its district. Every one of the 548,099 leases carries a field number -- no nulls, no zeros -- and 547,747 of them find a directory row, over 61,768 distinct fields. The field a lease was in at the time of an OLDER filing is info_field_no on p4_filing, which reaches the same directory: 48,048 of its 48,150 distinct values are in it. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.

p4-certificate-of-authorization.field_no = pdq-field-directory.field_no

PDQ Field Directory joins to PDQ Lease Production by Cycle on Field number — one row here matches many rows there.

produced from the field

The eight-digit field number resolved to a field name, class, discovery date and rules flags.

pdq-lease-cycle.field_no = pdq-field-directory.field_no

PDQ Field Directory joins to Gas Annual Report Field Table on District name = District and Field name = Field name — rows can match many rows in both directions.

is the field

The annual gas report has no field number, only a name, so this is the route to one. Matched on the printed district and the exact field name, 42,125 of the 42,138 annual rows find a directory entry — the thirteen that do not are the twelve 'DISTRICT TOTAL' rows and the one ' TEXAS TOTALS' row RRC writes into the field-name column. A name is not a key: a handful of districts carry two directory fields under one name, so 42,105 distinct district-and-name pairs produce 42,188 matched rows. Check the field number you get back before you build on it.

gas-annual-report-field-table.district = pdq-field-directory.district_name AND gas-annual-report-field-table.field_name = pdq-field-directory.field_name

PDQ Field Directory joins to UIC Database (ASCII) on Field number — one row here matches many rows there.

injects into the field

The permitted injection field, resolved to a field name.

uic-database-ascii.field_no = pdq-field-directory.field_no

Where this comes from

Published by
Texas Railroad Commission — the original page
Original format
CSV Comma-separated text.
RRC publishes
Updated once a month (Last Saturday each month, with the PDQ dump.)
RRC download link
GoAnywhere MFT
Record layout manuals
Our table
texas.pdq_og_field_dw

EZRRC is an independent mirror of public-domain data published by the Texas Railroad Commission. It is not affiliated with or endorsed by the RRC. For any legal or regulatory purpose, verify against the official RRC release.