İnsanoğlu hala tüm bilgisayarların en alışılmadık olanıdır. Jhon F.Kennedy
18 Ekim 2017 Çarşamba
HTML'de Sayfanın İstenilen Bölümünü Yazıcıdan Çıktısını Alma
HTML'de İstenilen <div ' i Yazdırma (Yazıcıdan Print Etme ):
Aşağıda bir .html sayfasının div'lere bölünerek sayfanın istenilen bölümünün nasıl yazdırılacağı hakkında basit bir örnek paylaşıyorum.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head><h1>Başlık</h1></head>
<body>
<div id="Print1">
//Aşağıdaki script linki olmadan print olayı gerçekleşmeyecektir. Print aşağıdaki .js kütüphanesini kullanıyor.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
//Aşağıdaki gibi yazdırma fonksiyonu tanımlanır, bu fonksiyon amaca göre div'in dışında <head> tag'ı içerisinde de tanımlanabilir.
function printDiv(divAdi)
{
var printContents = document.getElementById(divAdi).innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
</script>
<h1>YAZDIRILAN BÖLÜM : Yazıcıdan çıktısı alınabilir. </h1>
</div>
<div id="diger">
<h1>YAZDIRILMAYAN BÖLÜM: Yazıcıdan çıktısı alınmayacak.</h1>
</div>
//Aşağıda tanımlanan fonksiyona action vermek için button tanımladım. Burada dikkat edilecek yer buttonun type ve onclick özellikleridir. onclick olayında çağırılan fonksiyonun aynı isimde olmasına dikkat edilmeli.
<input type="button" onclick="printDiv('Print1')" value="Div Yazdır" />
İşlem bu kadar, kolay gelsin.
5 Haziran 2017 Pazartesi
Informix SQL'de Alter ve Modify Table İşlemleri
Informix SQL'de Alter Table Yapmak:
Veritabanında herhangi bir tablo üzerinde sonradan kolon açmak istediğimizde SQL dilinde Alter Table değimini kullanmamız gerekir. Kullanım şekli aşağıdaki gibidir:
//Aşağıdaki Alter Table ifadesinde oluşturulmak istenen kolon için ekstradan özellik atanmıştır. eklenecek kolonun veri tipi:char(3) alacağı Default değer ataması:'trk' ve tabloda yer alan kolonlardan hangi kolondan önce yer alacağı Before, ad_date adlı kolondan önce yer alacak.
ALTER TABLE tablo_adi ADD eklenecek_kolon_adi CHAR(3) DEFAULT 'trk' BEFORE ad_date
// Informix'de aynı anda birden fazla komutun işletilmesi için komutlar arası eklenen ayırac aşağıdaki gibidir.
^!^
ALTER TABLE tablo_adi ADD eklenecek_kolon_adi CHAR(3) DEFAULT 'trk' BEFORE ad_date
Informix SQL'de Modify Table Yapmak:
Veritabanında herhangi bir tablonun kolon özelliğini değiştirmek istediğimizde SQL dilinde Alter Modify değimini kullanmamız gerekir. Kullanım şekli aşağıdaki gibidir:
//Aşağıdaki Alter Table Modify ifadesinde tablonun özelliği değiştirilmek istenen kolonun Char karakter sayısı, yani kolonun genişliği tekrardan tanımlanmaktadır. Aynı şekilde kolonun alcağı değer tipi de değiştirilebilirdi.
ALTER TABLE tablo_adi MODIFY degistirilecek_kolon_adi CHAR(100);
^!^
ALTER TABLE tablo_adi MODIFY degistirilecek_kolon_adi CHAR(100);
26 Mayıs 2017 Cuma
Informix'de Veritabanındaki Tabloları Listelemek
Informix'de Veritabanındaki Tüm Tabloları ve O Tabloların Alanlarını, Alan tiplerini listeleyen SQL Sorgusu:
SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column,
CASE
WHEN MOD(coltype,256)=0 THEN 'CHAR'
WHEN MOD(coltype,256)=1 THEN 'SMALLINT'
WHEN MOD(coltype,256)=2 THEN 'INTEGER'
WHEN MOD(coltype,256)=3 THEN 'FLOAT'
WHEN MOD(coltype,256)=4 THEN 'SMALLFLOAT'
WHEN MOD(coltype,256)=5 THEN 'DECIMAL'
WHEN MOD(coltype,256)=6 THEN 'SERIAL'
WHEN MOD(coltype,256)=7 THEN 'DATE'
WHEN MOD(coltype,256)=8 THEN 'MONEY'
WHEN MOD(coltype,256)=9 THEN 'NULL'
WHEN MOD(coltype,256)=10 THEN 'DATETIME'
WHEN MOD(coltype,256)=11 THEN 'BYTE'
WHEN MOD(coltype,256)=12 THEN 'TEXT'
WHEN MOD(coltype,256)=13 THEN 'VARCHAR'
WHEN MOD(coltype,256)=14 THEN 'INTERVAL'
WHEN MOD(coltype,256)=15 THEN 'NCHAR'
WHEN MOD(coltype,256)=16 THEN 'NVARCHAR'
WHEN MOD(coltype,256)=17 THEN 'INT8'
WHEN MOD(coltype,256)=18 THEN 'SERIAL8'
WHEN MOD(coltype,256)=19 THEN 'SET'
WHEN MOD(coltype,256)=20 THEN 'MULTISET'
WHEN MOD(coltype,256)=21 THEN 'LIST'
WHEN MOD(coltype,256)=22 THEN 'ROW (unnamed)'
WHEN MOD(coltype,256)=23 THEN 'COLLECTION'
WHEN MOD(coltype,256)=40 THEN 'LVARCHAR fixed-length opaque types'
WHEN MOD(coltype,256)=41 THEN 'BLOB, BOOLEAN, CLOB variable-length opaque types'
WHEN MOD(coltype,256)=43 THEN 'LVARCHAR (client-side only)'
WHEN MOD(coltype,256)=45 THEN 'BOOLEAN'
WHEN MOD(coltype,256)=52 THEN 'BIGINT'
WHEN MOD(coltype,256)=53 THEN 'BIGSERIAL'
WHEN MOD(coltype,256)=2061 THEN 'IDSSECURITYLABEL'
WHEN MOD(coltype,256)=4118 THEN 'ROW (named)'
ELSE TO_CHAR(coltype)
END AS Type,
BITAND(coltype,256)=256 AS NotNull
FROM "informix".systables AS t
JOIN "informix".syscolumns AS c ON t.tabid = c.tabid
WHERE t.tabtype = 'T'
AND t.tabid >= 100
ORDER BY t.tabname, c.colno;
22 Mayıs 2017 Pazartesi
SQL'de Temp Tablolarla İşlem Yapmak
Temp tablolar local'de oluşturulan ve db connection olduğu sürece işlevsel olan, geçici tablolardır. Session mantığı gibi, işlemi bitirip oturumu kapattıktan sonra, yani db bağlantısını kapatıp tekrar açtığımızda önceden oluşturmuş olduğumuz temp tabloya erişmemiz imkansızdır.
Konuyu bir örnek ile anlatacak olursak; örnekte genkur tablosuna önceki kayıtlarından birinin kopyasını alarak insert işlemi yapmak istiyoruz. Bunun için genkur adındaki tablodan belirli bir tarihe ait kaydı ilk olarak geçici olarak tkur adındaki temp tablosuna aktarıyoruz, daha sonra tkur tablosuna aktardığımız kaydı güncelliyoruz, son olarak da tkur geçici tabloda güncellemiş olduğumuz kaydı genkur tablosuna aktarıyoruz. Böylece geçici (temp) tablo kullanımı sayesinde, herhangi bir tabloya önceki kayıtlarından kopya kaydı nasıl aktarılabileceğini görmüş olduk.
//Güncellemek istediğimiz kaydın temp tablosuna aktarılması
- SELECT * FROM genkur WHERE tarih=mdy(5,11,2017)
INTO temp tkur
//Temp tablosuna aktarılan kaydın güncellenmesi
- UPDATE tkur SET tarih=today
//Temp dosyasında güncellenen kaydın gerçek tabloya aktarılması
- INSERT INTO genkur
SELECT * FROM tkur
15 Mayıs 2017 Pazartesi
Excel'de Farklı Sayfalardaki Sütunları Karşılaştırma
VLOOKUP():
Excel'de Sheet2'deki sütuna bağlı kayıtların Sheet1'deki kayıtlarla karşılaştırılması ve farklı kayıtların filtrelenebilmesi için Sheet2'de, karşılaştırma sonucunu listelemek istediğimiz, sütuna aşağıdaki fonksiyonu tanımlamamız gerekir:
//formulde Belge No Sheet2 de karşılaştırmak istediğimiz sütun başlığına ait verilerin Sheet1 deki A:D sütunları arasında kalan veriler ile karşılaştırılması sağlanıyor.
=VLOOKUP([@[Belge No]];Sheet1!A:D;1;FALSE)
3 Mayıs 2017 Çarşamba
Informix Database Server'da Tablolara Kullanıcı Yetkisi Verme
SQL'de Database Tablolarına Kullanıcı Yetkisi Veren Stored Procedure:
Informix'de kullanıcılara tablo yetkisi veren procedure aşağıdaki gibi tanımlanabilir:
--- Aynı ad ile kayıtlı procedure var ise silinir.
drop PROCEDURE if exists SET_PERMISSION
--- Informix'de işletilmek istenen iki komut arası ayıracı...
^!^
---- stored procedure'nin oluşturulması...
CREATE PROCEDURE SET_PERMISSION()
---- procedure'de kullanılacak değişkenlerin tanımlanması..
DEFINE vYETKI char(200);
DEFINE vOWNER char(30);
DEFINE ERROR_NUMBER INT;
DEFINE ISAM_ERROR_VAR INT;
DEFINE ERROR_DATA_VAR CHAR(255);
DEFINE vTABLOYOKHATAKODU INT;
---- hata kodlarına bakarak hata kodu karşılaştırması yapan başka bir procedure'nin çalıştırılması..
ON EXCEPTION SET ERROR_NUMBER, ISAM_ERROR_VAR, ERROR_DATA_VAR
IF ERROR_NUMBER <> vTABLOYOKHATAKODU THEN
RAISE EXCEPTION ERROR_NUMBER, ISAM_ERROR_VAR, ERROR_DATA_VAR;
END IF;
END EXCEPTION;
---- procedure'de tanımlı bir değişkene const sayı ataması aşağıdaki gibidir.
LET vTABLOYOKHATAKODU=-206;
---- Select sorgusunda sonucu gelen tüm tabloları check eden foreach döngüsü...
FOREACH CR1 FOR
---- Select sonucunun procedure'de tanımlı vYETKI değişkenine atanması...
select 'GRANT ALL ON '||trim(OWNER)||'.'|| TRIM(TABNAME) || ' TO PUBLIC' into vYETKI
from systables
where ((tabtype='V' or statlevel='A') and tabname not like 'sys%')
---- vYETKI değişkenine atanan sonuçların execute edilmesi..
EXECUTE IMMEDIATE vYETKI;
---- döngü ve procedure'nin sonlandırılması...
END FOREACH;
END PROCEDURE
2 Mayıs 2017 Salı
Informix Database Server SQL'de Veri Aktarımı
SQL Dilinde Database Sunucular Arası Veri Aktarımı:
SQL 'de iki database arası veri aktarımı yapmak diğer yöntemlere göre çok daha hızlı olduğundan 'big data' database işlemlerinde zaman kazanabiliriz.
ortak@deneme1domain adresindeki veritabanından, ortkod tablosunda tipleri 9008 ile 9017 arasında olan kayıtları, ortak@deneme2domain adresindeki veritabanının ortkod tablosuna ekleme işlemi şu şekilde yapılır:
insert into ortak@deneme2domain:ortkod
select * from ortak@deneme1domain:ortkod
where tip between 9008 and 9017
12 Nisan 2017 Çarşamba
Informix Database Server DB Bağlantı Ayarları
Informix DB Server'de DB Bağlantı Ayarları için Yapılması Gerekenler:
Informix bağlantısı için;
1) ..windows\System32\drivers\etc\hosts dosyasında bağlanmak istenen DB'nin ip adresi ve domaininin tanımlı olması gerekir.
2) Informix Setnet32.exe programının bilgisayara yüklü olması gerekir.
3) dbxconnections.ini dosyasının DB configurationu yapılır.
4) Luxena\lxdbexpinf.dll
Luxena\lxdbexpinfpro.dll Luxena'nın .dll dosyaları windows\System32 dizinine atılır.
5) Informix Setnet32 Ayarları:
Server Information Tab: Informix Server için, dbxconnections.ini dosyasında yer alan DB adları altında hangi DB'ye bağlanmak istiyorsak o DB adının altında yer alan configuration bilgilerinden yararlanarak gerekli ayarlamalar yapılır.
HostName için, bağlanılacak sunucunun ip adresi yazılır.
Host Information Tab: Current Host için, bağlanılacak sunucunun ip adresi yazılır.
User Name için, veritabanı kullanıcı adı yazılır.
Password için, veritabanı kullanıcı şifresi yazılır.
6) Delphi7 components tabında yer alan dbExpress componentten SQLConnection nesnesi uygulamanın formuna eklenir. Nesnenin properties'inden;
DriverName :InformixLuxena (system32'ye eklemiş olduğumuz Luxena\dll)
ConnectionName:dbxconnections.ini ' de yer alan DB bağlantılarından configurationunu yapmış olduğumuz DB'nin adı yazılır.
Son olarak da nesnenin ilgili DB'ye bağlanıp bağlanmadığını test etmek için Connected alanı True yapılır.
Visual Studio'da Proje Derleme
Visual Studio'da C# Projesini Derleme :
Visual Studio'da C# Projesi Derleme Adımları:
1) İlk önce derlemek istediğimiz proje, Visual Studio'nun hangi sürümünde yapılmış ise o sürümü ile çalıştırılır.
2) Visual Studio'nun üst tarafında yer alan 'Debug' kısmı 'Release' olarak ayarlanır.
3) Proje F6 tuşu ile veya Solution üzerinden Build edilir.
4) 'Release' seçeneği tekrardan 'Debug' olarak ayarlanarak proje kapatılır.
5) Son olarak, projenin (.sln uzantısı) adresi herhangi bir web tarayıcıdan girilerek enter tuşuna basılır, herhangi bir hata ile karşılaşılmaz ise compile işlemi sorunsuz bitmiş demektir.
16 Mart 2017 Perşembe
SQL'de Birden Fazla Alanı Tek Alan Yapmak
SQL'de Aynı Kolondaki Birden Fazla Alanı Tek Alan Yapmak:
SQL'de bir kolona ait birden fazla alandan dönen verileri tek bir alan içerisine yazdırmak için aşağıdaki gibi sorgu yazabiliriz:
SELECT surid, string_agg(sqql, '+') AS sqql_list
FROM dyndeneme d, dyntestsym t where t.oid=d.oidtestsym and surid=surecid
GROUP BY 1 // sorgudaki string_agg() fonksiyonu ile sqql adındaki kolondan dönen değerlerin arasına '+' işareti koyarak tek bir alana yazıyor.
15 Mart 2017 Çarşamba
Linux (Centos 7) Firewall Ayarları ve Port Açma
CentOS 7 Firewall Port Açma
firewall-cmd --list-all : Makinede açık ve kullanılıyor olan portların listesini ekranda gösterir.
firewall-cmd --add-port=8733/tcp --permanent : firewall üzerinde 8733 portunun açılması.
/etc/firewalld altında firewalld servisinin ayarları bulunmaktadır.
/etc/firewalld/zones/public.xml altında varsayılan zoneda açılan portlar saklanmaktadır.
–permanent parametresi değiştirilen portların kalıcı olarak saklanmasını sağlar.
firewall-cmd --reload : firewall yeniden başlatılır.
Firewall Ayarları
firewall-cmd --permanent --get-services : firewall servislerine erişim.
systemctl status firewalld : firewall aktif mi değil mi ?.
firewall-cmd --state : firewall aktif mi değil mi ?.
systemctl stop firewalld : firewall kapatma.
systemctl start firewalld : firewall açma.
10 Mart 2017 Cuma
PHP'de String İşlemleri
PHP'de explode() Fonksiyonu:
Metin ifadeleri bir ayraç ile parçalamak için explode() fonksiyonu kullanılır. Bu fonksiyon, string ifade içinde belirlenen ayraç bulunduğu müddetçe metni parçalar ve bir dizi olarak geri döndürür.
Sözdizimi: explode(ayraç,string,limit)
Ayraç: gereklidir.
String: gereklidir.
Limit: isteye bağlıdır. Limit pozitif ise en çok belirtilen sayıda eleman içerir. ve metnin kalanı son elemana yerleştirilir.Limlit negatifse son limlit eleman hariç tüm elemanlar döndürülür. Limit sıfırsa dizi, 1 eleman gösterilir.
$meyve = "Elma,Armut,Kiraz,Muz,Şeftali,nar" ; |
|
| $dizi = explode ( "," , $meyve ,-2); |
|
| echo '<pre>' ; |
|
| print_r ( $dizi ); |
|
| echo '</pre>' ; |
Çıktısı:
Array
( [0] => Elma [1] => Armut [2] => Kiraz [3] => Muz )
Client bağlantısı ile veritabanından dizi şeklinde dönen değerlerin
sayfada listelenmesi:
try {
$client = new SoapClient ( $url . "?wsdl", $params );
$data = $client-> __soapCall("stringprocess", array($cduser));
$menu = explode(" ", $data. "\n");
foreach ($monu as $key => $value)
{
echo "<p>".$key."</p>";//dizi elemanlarının indexlerini tutar
echo "<p>".$value."</p>";//dizi elemanlarını tutar
echo "<hr />";
}
}
catch(Exception $e) {
die($e->getMessage());
}
9 Mart 2017 Perşembe
PHP ile Sistem Tarih ve Saatini Yazdırmak
PHP'de sistem tarihini projelerimizde kullanmak için aşağıdaki kodları yazabiliriz.
<?php
$tarih = date("d.m.Y"); //Sistemde görünen güncel tarihi almak için
$saat = date("H:i:s"); //Sistemde görünen güncel saati almak için
echo "Tarih :".$tarih."<br>";
echo "Saat:".$saat;
?>
7 Mart 2017 Salı
PHP - Oracle Fonksiyonunun Kullanımı
PHP'de Oracle Fonksiyona Parametre Gönderme:
function data_analiz($tablo, $kosul, $islem) // client tarafından bu fonksiyon çağrılıyor, kullanıcının girdiği veriler post metodu ile buraya düşüyor
{
$conn = "(DESCRIPTION=(ADDRESS = (PROTOCOL = TCP)(HOST = btctestdb.baticim.com.tr)(PORT = 1541))(CONNECT_DATA=(SID=BTCMTEST)))" ;//oracle bağlantısı
if($conn = OCILogon("SOFTEXPERT", "SOFTEXPERT", $conn))//bağlantıda kullanıcı şifre kontrolü
{
$stid = oci_parse($conn, 'begin apps.xxbtc_softexpert_sorgu_f(:p_tablo, :p_kosul, :p_islem); end;');//burada oracle tarafında tanımlı olan fonksiyonu çağırıyorum
//ALTERNATİF KULLANIM OLARAK, ORACLE'da TANIMLI FONKSİYONUN SELECT SORGUSUNDA KULLANIMI
$stid = oci_parse($conn, "Select apps.xxbtc_softexpert_sorgu_f(:p_tablo, :p_kosul, :p_islem) as deger from dual");
oci_bind_by_name($stid, ':p_tablo', $tablo);// kullanıcının gireceği değerlerin aktarılması
oci_bind_by_name($stid, ':p_kosul', $kosul);
oci_bind_by_name($stid, ':p_islem', $islem);
//ALTERNATİF KULLANIM OLARAK, SELECT SORGUSUNDA as deger ADI ÜZERİNDEN FONKSYİON SONUCUNUN DEĞİŞKENE AKTARILMASI
while (oci_fetch($stid)) {
$id = oci_result($stid, [0]);
}
return $id;
$sonuc = oci_execute($stid);
}
else
{
$err = OCIError();
echo "Baglanti Hatasi." . $err[text];
}
return $sonuc;
}
6 Mart 2017 Pazartesi
PHP - SOAP Servisleri Türkçe Karakter Sorunu
PHP - SOAP Türkçe Karakter Sorunun Çözümü:
PHP - SOAP web servisleri uygulamalarında türkçe karakter desteği hatası alıyorsak sorun HTML, PHP ve bağlanılan Veritabanı tarafında değil ise sorunu en son SOAP servis tarafında çözmeye bakmak gerekir. Durum şu ki veritabanından gelen datalar SOAP servisten yorumlandığı için PHP tarafında yaptığımız Türkçe karakter ayarları etkisiz kalıyor. Öyle bir durumda aşağıdaki gibi UTF-8 SOAP servis ayarı yapmak gerekir.
$servis ->soap_defencoding = 'UTF-8';
$servis ->soap_defencoding = 'UTF-8';
$servis ->soap_defencoding = 'UTF-8';
28 Şubat 2017 Salı
PHP'de SQL Sorgu Cümlesinde Değişken Tanımlama
PHP'de SQL Sorguda Tablo ismini veya aranılan kolon ismini bir değişkene bağlamak istediğimizde sorguyu aşağıdaki gibi yazmamız gerekir:
- SELECT $idfield1 FROM $idfield2 where WIP_ENTITY_NAME='$idfield3'
27 Şubat 2017 Pazartesi
PHP'de Oracle Veritabanına Bağlanma
PHP ile Oracle Veritabanına Bağlanma Fonksiyonu:
Fonksiyon, Oracle veritabanına bağlanıp kullanıcıdan aldığı parametreyi SQL sorguda kriter olarak belirleyerek sorgudan dönen değeri sonuç olarak döndürüyor.
function data_analiz($idfield1) // dışarıdan parametre alan fonksiyon
{
//Oracle bağlantı string'i
$conn = "(DESCRIPTION=(ADDRESS = (PROTOCOL = TCP)(HOST = host.domain.adresi)(PORT = 1541))(CONNECT_DATA=(SID=BTCMTEST)))" ;
if ($conn = OCILogon("user_name", "password", $conn))
{
// echo "Oracle veritabanına başarıyla bağlandı...\n";
$stid = oci_parse($conn, "SELECT STATUS_TYPE FROM APPS.XXBTC_SE_WORK_ORDERS_V where WIP_ENTITY_NAME='$idfield1'");
oci_execute($stid);
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false)
{
$id=$row['STATUS_TYPE'];
}
// OCILogoff($c);
}
else
{
$err = OCIError();
echo "Connection failed." . $err[text];
}
return $id;
}
31 Ocak 2017 Salı
Resimleri İkon Hale Getirmek
Resimler Nasıl İkon (.ico uzantılı) Hale Getirilir?
Resimlerin direkt olarak ikon hale getirebilmek için aşağıdaki adrese tıklayarak bu işlemi 2 adımda kolayca yapabilmekteyiz.
http://ico.bradleygill.com/index.php
1- İkon haline getirmek istediğiniz resmi upload edin.
2- ico uzantılı hale gelen resmin üzerine tıklayarak download edin.
19 Ocak 2017 Perşembe
Veritabanı DBLink Oluşturma
PostgreSQL'de DBLink Nasıl Oluşturulur?
DBLink, bir veritabanından başka bir veritabanına erişim sağlamak için veritabanı nesneleri arası kurulan köprü mantığıdır. Bu ilişki aynı sunucu üzerinde iki farklı veritabanı arasında olacağı gibi farklı sunucular üzerine kurulu farklı veritabanları arasında da kurulabilir. Bizim yapacağımız örnekte farklı sunucular üzerine kurulu farklı veritabanları arasındaki dblink özelliği olacaktır. Bunun için A sunucusu üzerine kurulu test1DB ile B sunucusu üzerine kurulu test2DB veritabanları arasında bir dblink oluşturmaya çalışacağız. test1DB sql konsolu üzerine uygulayacağımız adımlar aşağıdaki gibidir:
Oluşturacağım DBLink'in adı: testpostgresconn
- DBLink extensions'ın veritbanına yükleme
CREATE EXTENSION dblink;
- Kurulan DBLink extensions'ın test edilmesi veya barındırdığı özelliklerin listelenmesi
SELECT pg_namespace.nspname, pg_proc.proname
FROM pg_proc, pg_namespace
WHERE pg_proc.pronamespace=pg_namespace.oid
AND pg_proc.proname LIKE '%dblink%';
- DBLink üzerinden testDB2 Veritabanına Erişimin Test Edilmesi
SELECT dblink_connect('host=hostadresi user=db_kul_ad password=db_psswrd dbname=testDB2');
- Global Kullanıcı (Authentication) ve Server Oluşturma
CREATE FOREIGN DATA WRAPPER db_kul_ad VALIDATOR postgresql_fdw_validator;
CREATE SERVER testpostgresconn FOREIGN DATA WRAPPER db_kul_ad OPTIONS (hostaddr 'hostadresi', dbname 'testDB2');
- Ortak Kullanım için Mapping Oluşturma
CREATE USER MAPPING FOR db_kul_ad SERVER testpostgresconn OPTIONS (user 'db_kul_ad', password 'db_psswrd');
- Oluşturduğumuz DBLink'i Test Etme
SELECT dblink_connect('testpostgresconn');
Şuana kadarki adımları başarılı bir şekilde uyguladığımız taktirde aşağıdaki 'Select' sql sorgu cümleciği ile test1DB üzerinden test2DB veritabanındaki tablolara erişebiliriz. Ve bundan sonra test1DB üzerinden test2DB tablolarına erişim için sorgularımızı yaratmış olduğumuz 'testpostgresconn' adındaki sanal server ortak bağlantısına yazmamız gerekir.
SELECT * FROM public.dblink
('testpostgresconn','SELECT idstruct,nmstruct FROM public.wfstruct')
AS DATA(idstruct CHARACTER VARYING,nmstruct CHARACTER VARYING);
Kaydol:
Kayıtlar (Atom)