Postgresql Copy komutu ile import
Postgresql Copy komutu ile import,COPY komutu yardımı ile tablolarımızı dizine aktarabilir ve dizinden tablolara aktarabiliriz. Bunu yaparken farklı programlar kullanabilir veya istenilen kolonları seçebiliriz.
Postgrseql import işlemleri yaparken belirtilen dizindeki dosyamızı tablomuza ekleyebiliriz.
POSTGRESQL de tablolarımıza text,csv,data gibi dosyaları import edebiliriz. İmport ederken farklı parametreler kullanarak işletim sisteminde komutları kullanabiliriz.
Aşağıdaki örneğimizde csv uzantısında ki dosyayı tablomuza insert edeceğiz.
İlk olarak aşağıdaki gibi tablomuzu oluşturuyoruz.
CREATE TYPE public.mpaa_rating AS ENUM
('G', 'PG', 'PG-13', 'R', 'NC-17');
CREATE DOMAIN public.year
AS integer;
ALTER DOMAIN public.year
ADD CONSTRAINT year_check CHECK (VALUE >= 1901 AND VALUE <= 2155);
CREATE TABLE public.filmcopy
(
film_id integer,
title text COLLATE pg_catalog."default",
description text COLLATE pg_catalog."default",
release_year year,
language_id integer,
original_language_id integer,
rental_duration smallint,
rental_rate numeric(4,2),
length smallint,
replacement_cost numeric(5,2),
rating mpaa_rating,
last_update timestamp with time zone,
special_features text[] COLLATE pg_catalog."default",
fulltext tsvector
)
Tablomuzu oluşturduktan sonra aşağıdaki gibi copy komutunu çalıştırarak yukarıda oluşturduğumuz tabloya verileri ekliyoruz.
COPY filmcopy FROM '/var/lib/pgsql/13/backups/filmtable.csv' DELIMITER '|';
Yukarıdaki örnekte Delimeter olarak “|” kullanılmıştır ve başarılı şekilde tabloya import edilmiştir.
COPY komutu yardımı ile web servisten istek yapabilir ve bunun sonucunu tabloya yazdırabiliriz.
İlk olarak tablomuzu oluşturuyoruz.
create table curlwebsite(body text );
Tablomuza aşağıdaki şekilde insert yapıyoruz.
COPY curlwebsite FROM PROGRAM ‘curl https://jsonplaceholder.typicode.com/posts’;
Yukarıda tablomuza web servisten gelen sonucu yazdırdık bu örnek te COPY komutu ile işletim sistemi üzerinde çalıştırabileceğimiz disk boyutunu alıyor ve oluşturduğumuz tabloya yazdırıyoruz.
İlk olarak tablo location_size isminde tablomuzu oluşturalım.
CREATE TABLE location_size(file_name text);
Tablomuzu oluşturduktan sonra aşağıdaki gibi sorgumuz çalıştırarak sorgu sonucunu tabloya insert edebiliriz.
COPY location_size FROM PROGRAM 'du -sh /var/lib/pgsql/13/backups/' WITH (format 'csv');
Postgresql’in error loglarını tabloya yazdırmak aşağıdaki komutu kullanabilirsiniz.
COPY errorlog FROM PROGRAM 'cat /var/lib/pgsql/13/data/log/postgresql-Sat.log |grep ERROR' DELIMITER '\' CSV HEADER;