Data Loading Utilities¶
Let us understand how we can load the data into databases using utilities provided.
Most of the databases provide data loading utilities.
One of the most common way of getting data into database tables is by using data loading utilities provided by the underlying datatabase technology.
We can load delimited files into database using these utilities.
Here are the steps we can follow to load the delimited data into the table.
Make sure files are available on the server from which we are trying to load.
Ensure the database and table are created for the data to be loaded.
Run relevant command to load the data into the table.
Make sure to validate by running queries.
Let us see a demo by loading a sample file into the table in Postgres database.
Loading Data¶
We can use COPY Command using psql
to copy the data into the table.
Make sure database is created along with the user with right permissions. Also the user who want to use
COPY
command need to have pg_read_server_files role assigned.Create the file with sample data. In this case data is added to users.csv under /data/sms_db
user_first_name,user_last_name,user_email_id,user_role,created_dt
Gordan,Bradock,gbradock0@barnesandnoble.com,A,2020-01-10
Tobe,Lyness,tlyness1@paginegialle.it,U,2020-02-10
Addie,Mesias,amesias2@twitpic.com,U,2020-03-05
Corene,Kohrsen,ckohrsen3@buzzfeed.com,U,2020-04-15
Darill,Halsall,dhalsall4@intel.com,U,2020-10-10
Connect to Database.
psql -U itversity_sms_user \
-h localhost \
-p 5432 \
-d itversity_sms_db \
-W
Create the
users
table.
CREATE TABLE users (
user_id SERIAL PRIMARY KEY,
user_first_name VARCHAR(30) NOT NULL,
user_last_name VARCHAR(30) NOT NULL,
user_email_id VARCHAR(50) NOT NULL,
user_email_validated BOOLEAN DEFAULT FALSE,
user_password VARCHAR(200),
user_role VARCHAR(1) NOT NULL DEFAULT 'U', --U and A
is_active BOOLEAN DEFAULT FALSE,
created_dt DATE DEFAULT CURRENT_DATE
);
Use copy command to load the data
COPY users(user_first_name, user_last_name,
user_email_id, user_role, created_dt
) FROM '/data/sms_db/users.csv'
DELIMITER ','
CSV HEADER;
Validate by running queries
SELECT * FROM users;