# Questions about various cbt core functionalities

**URL:** <https://discourse.getdbt.com/t/questions-about-various-cbt-core-functionalities/20207>\
**Category:** Help\
**Tags:** dbt-core\
**Created:** [September 8, 2025, 4:10pm UTC](https://discourse.getdbt.com/t/questions-about-various-cbt-core-functionalities/20207 "2025-09-08T16:10:06Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![martinr](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@martinr](https://discourse.getdbt.com/u/martinr)\
**Post date:** [September 8, 2025, 4:10pm UTC](https://discourse.getdbt.com/t/questions-about-various-cbt-core-functionalities/20207/1 "2025-09-08T16:10:06Z")

</div>

Hi, I’m new in dbt, and I would like to know if some options are possible in dbt core, as I’m struggling to find the correct ways to do it:

1. Is it possible to hardcode the column names of a model, without needing to use `as`alias? I saw there is an option to define the column names of models ([columns | dbt Developer Hub](https://docs.getdbt.com/reference/resource-properties/columns)), but it doesn’t seem to work?  
Example:  
I have a seed `seed1` with a column `col1`.  
I want to build a model that does:  
`select * from {{ ref('seed1') }}`  
I can’t find a way for my model to name the resulting column `colA` instead, without using:  
`select col1 as colA from {{ ref('seed1') }}`.

2. Is it possible to only specify to run one model, and all the relative models will infer? Or do I only have these 2 options:

- use a flat `dbt run`, but that may run models I didn’t want to run
- manually write every relative models and my final model in my `dbt run` command?

Example:  
I have 3 models:

- `models/model1.sql`:`select * from {{ ref('seed1') }}`
- `models/model2.sql`:`select * from {{ ref('model2') }}`
- `models/model3.sql`:`select * from {{ ref('model3') }}`

Is there a way to just run model3without mentioning model1 and model2 (so dbt would infer it)?Currently, if I try do to `dbt run --select model3`, I will get `ORA-00942: table or view does not exist`.  
And `dbt compile --select model3`will return:  
`select * from default_sch.model2`  
instead of:  
`select * from (select * from (select * from default_sch.seed1))`

1. Is there a way to specify an already existing schema for an already existing table, without overwriting the macro `generate_schema_name.sql` by omitting the `default_schema` when a custom schema is given, as it is not recommended per the documentation ( [Custom schemas | dbt Developer Hub](https://docs.getdbt.com/docs/build/custom-schemas#warning-dont-replace-default_schema-in-the-macro) )?

2. Are seeds always csv files, or can they be other formats too?

3. The same way I can load a csv file as a seed, can I generate a csv file as the output of my model?

Thanks!

---

<div class="post-metadata">

**Author:** ![a\_slack\_user](https://sea2.discourse-cdn.com/flex020/user_avatar/discourse.getdbt.com/a_slack_user/32/1629_2.png) [@a\_slack\_user](https://discourse.getdbt.com/u/a_slack_user)\
**Post date:** [September 8, 2025, 4:13pm UTC](https://discourse.getdbt.com/t/questions-about-various-cbt-core-functionalities/20207/2 "2025-09-08T16:13:56Z")

</div>

(1): no; if you want to alias the columns of your seed when you select from the seed table, you’ll need to alias them individually.

(2): I think you’re looking for the `+` graph operator. More info here: [https://docs.getdbt.com/reference/node-selection/graph-operators](https://docs.getdbt.com/reference/node-selection/graph-operators)

Note: `@Owen` originally [posted this reply in Slack](https://getdbt.slack.com/archives/CBSQTAPLG/p1757348019683029?thread_ts=1757347830.469549&cid=CBSQTAPLG). It might not have transferred perfectly.

---

<div class="post-metadata">

**Author:** ![martinr](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@martinr](https://discourse.getdbt.com/u/martinr)\
**Post date:** [September 8, 2025, 4:18pm UTC](https://discourse.getdbt.com/t/questions-about-various-cbt-core-functionalities/20207/3 "2025-09-08T16:18:25Z")

</div>

awesome for the `+`  
annoying for the column names 😔

---

<div class="post-metadata">

**Author:** ![a\_slack\_user](https://sea2.discourse-cdn.com/flex020/user_avatar/discourse.getdbt.com/a_slack_user/32/1629_2.png) [@a\_slack\_user](https://discourse.getdbt.com/u/a_slack_user)\
**Post date:** [September 8, 2025, 4:19pm UTC](https://discourse.getdbt.com/t/questions-about-various-cbt-core-functionalities/20207/4 "2025-09-08T16:19:26Z")

</div>

(4) Seed files are csv. If you want to expose other file formats to your database platform, you might look into the external tables package: [https://hub.getdbt.com/dbt-labs/dbt\_external\_tables/latest/](https://hub.getdbt.com/dbt-labs/dbt_external_tables/latest/)

(5) If you want to dump a table from your database to a csv file, you could probably write a post-hook that invokes the relevant command for your database (like `unload` or something). Documentation on post-hooks lives here: [https://docs.getdbt.com/reference/resource-configs/pre-hook-post-hook](https://docs.getdbt.com/reference/resource-configs/pre-hook-post-hook)

Note: `@Owen` originally [posted this reply in Slack](https://getdbt.slack.com/archives/CBSQTAPLG/p1757348349438189?thread_ts=1757347830.469549&cid=CBSQTAPLG). It might not have transferred perfectly.

---

<div class="post-metadata">

**Author:** ![martinr](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@martinr](https://discourse.getdbt.com/u/martinr)\
**Post date:** [September 8, 2025, 4:31pm UTC](https://discourse.getdbt.com/t/questions-about-various-cbt-core-functionalities/20207/5 "2025-09-08T16:31:53Z")

</div>

Additional question, when I perform an `INSERT` (like with `materialized='incremental'` and `incremental_strategy='append'`), I can see that by default the insert matches the columns by name rather than by position.  
Is there a way to make it matches by position?  
Also, is it possible to omit a column in the insert so the values is inserted as NULL? Or do I need to explicitly mention `cast(null as varchar2(50)) as col4` in the selection, for example, if the column I want to omit is `col4` with a `varchar2(50)` type?

---

<div class="post-metadata">

**Author:** ![a\_slack\_user](https://sea2.discourse-cdn.com/flex020/user_avatar/discourse.getdbt.com/a_slack_user/32/1629_2.png) [@a\_slack\_user](https://discourse.getdbt.com/u/a_slack_user)\
**Post date:** [September 8, 2025, 4:41pm UTC](https://discourse.getdbt.com/t/questions-about-various-cbt-core-functionalities/20207/6 "2025-09-08T16:41:00Z")

</div>

A dbt model is just a SQL query that describes a table. If, when running a model, a particular column should be `null` (always or sometimes), you’ll need to build that logic into your model’s `.sql` file. But your model should be a `select` query that populates all columns in the destination table.

Note: `@Owen` originally [posted this reply in Slack](https://getdbt.slack.com/archives/CBSQTAPLG/p1757349639791279?thread_ts=1757347830.469549&cid=CBSQTAPLG). It might not have transferred perfectly.
