PolarDB for PostgreSQL (Compatible with Oracle) menyediakan driver ODBC untuk sistem Unix dan Windows. Topik ini menjelaskan cara menggunakan driver tersebut untuk menghubungkan ke kluster Anda.
Prasyarat
-
Anda telah membuat akun database di kluster PolarDB. Untuk informasi selengkapnya, lihat Create a database account.
-
Alamat IP host yang perlu mengakses kluster PolarDB telah ditambahkan ke daftar putih. Untuk informasi selengkapnya, lihat Set a cluster whitelist.
-
Sistem Windows Anda adalah Windows 7 atau versi yang lebih baru dengan Service Pack 1 terinstal.
-
Alat-alat berikut telah diinstal pada sistem Unix atau Linux Anda:
-
Libtool 1.5.10 atau versi yang lebih baru.
-
unixODBC-devel.
-
PolarDB-Tools. Untuk petunjuk pengunduhan dan instalasi, lihat PolarDB-Tools.
-
Unduh driver
-
Sistem Unix atau Linux x86 32-bit: PolarDB-ODBC_Linux_X86_32.tar.gz
-
Sistem Unix atau Linux x86 64-bit: PolarDB-ODBC_Linux_X86_64.tar.gz
-
Sistem Unix atau Linux Arm 64-bit: PolarDB-ODBC_Linux_arm_64.tar.gz
-
Sistem Windows x86 64-bit: PolarDB-ODBC_Windows_x86_64.7z
-
Sistem Windows x86 32-bit: PolarDB-ODBC_Windows_x86_32.7z
Instal ODBC pada Windows
-
Unduh paket instalasi sesuai arsitektur Windows Anda. Untuk tautan unduhan, lihat Download the driver.
-
Setelah pengunduhan selesai, ekstrak paket ODBC.
-
Jalankan file
install.batsebagai administrator. Setelah instalasi selesai, tekan sembarang tombol untuk keluar. -
Opsional: Untuk menguninstal paket ODBC, jalankan file
uninstall.bat.
Hubungkan ke PolarDB pada Windows
-
Di Control Panel, buka Tools.
-
Pada halaman Tools, cari dan buka ODBC Data Sources.
-
Di kotak dialog ODBC Data Source Administrator, klik Add.
-
Pilih POLARDB (UNICODE) dan klik Complete.
-
Di kotak dialog, masukkan informasi berikut.
Parameter
Deskripsi
Data Source
Nama sumber data.
Description
Deskripsi untuk sumber data.
Database
Nama database tujuan.
SSL Mode
Pilih metode enkripsi SSL.
Server
Titik akhir database tujuan. Untuk melihat titik akhir kluster PolarDB, lihat View or apply for an endpoint.
Port
Port database tujuan. Nilai default-nya adalah 1521.
User Name
Username untuk akun database.
Password
Password untuk akun database.
-
Klik Save.
Instal ODBC pada Unix atau Linux
-
Jalankan perintah berikut untuk mengatur variabel lingkungan LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=<PolarDB-ODBC/lib/path> -
Jalankan perintah berikut untuk mengatur variabel lingkungan ODBCINI:
export ODBCINI=<your odbc.init file path> -
Unduh driver ODBC yang sesuai dengan arsitektur dan versi sistem operasi Anda. Untuk tautan unduhan, lihat Download the driver.
-
Instal driver ODBC.
CatatanPaket driver ODBC PolarDB bersifat portabel. Anda dapat langsung menggunakannya setelah diekstrak.
tar -zxvf polardb-odbc.tar.gzStruktur direktorinya sebagai berikut:
├── include ├── lib └── samples 3 directories
Hubungkan ke PolarDB pada Unix atau Linux
-
Instal Libtool pada server Linux Anda. Versi Libtool harus 1.5.10 atau lebih baru.
yum install -y libtool -
Instal unixODBC-devel pada server Linux Anda.
yum install -y unixODBC-devel -
Edit file
odbc.iniAnda.vim $ODBCINI -
Tambahkan informasi berikut ke file
odbc.ini.[POLARDB] Description = ODBC for POLARDB Driver = /home/user/target/lib/unix/polardb-odbc.so Driver64 = /home/user/target/lib/unix/polardb-odbc.so Database = <Your database name> Servername = <Your database endpoint> Password = <Your password> Port = <Your port> Username = <Your username> Trace = yes TraceFile = /tmp/odbc.log FileUsage = 1Catatan-
Untuk melihat titik akhir kluster PolarDB, lihat View or apply for an endpoint.
-
Pada contoh ini, ganti /home/user dengan path aktual yang berisi folder
target.
-
-
Hubungkan ke PolarDB.
$isql -v POLARDB +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>
Contoh untuk Unix atau Linux
Bagian ini menunjukkan cara menjalankan file uji Test1 dan Test2.
Sebelum menjalankan contoh, buat dan isi tabel berikut di database PolarDB Anda:
create table emp(empno number(4),
ename varchar2(10),
job varchar2(9),
mgr number (4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2));
insert into emp values(7369,'smith','clerk',7902 ,to_date('17-12-1980','dd-mm-yyyy'),800,null, 20 );
insert into emp values(7499,'allen','salesman',7698 ,to_date('20-2-1981','dd-mm-yyyy'),1600, 300 , 30 );
insert into emp values(7521,'ward' ,'salesman' ,7698 ,to_date(' 22-2-1981' , 'dd-mm-yyyy' ), 1250 , 500 , 30 );
insert into emp values(7566,'jones','manager' , 7839 ,to_date(' 2-4-1981' , 'dd-mm-yyyy' ), 2975 , null , 20 );
insert into emp values(7654,'martin','salesman',7698 ,to_date(' 28-9-1981' , 'dd-mm-yyyy' ), 1250 , 1400 , 30 );
insert into emp values(7698,'blake','manager', 7839 ,to_date(' 1-5-1981' , 'dd-mm-yyyy' ), 2850 , null , 30 );
insert into emp values(7782,'clark','manager', 7839 ,to_date(' 9-6-1981' , 'dd-mm-yyyy' ), 2450 , null , 10 );
insert into emp values(7788,'scott','analyst', 7566 ,to_date(' 13-7-1987' , 'dd-mm-rr ' ) - 85 , 3000 , null , 20 );
insert into emp values(7839,'king', 'president ' , null ,to_date('17-11-1981 ' , 'dd-mm-yyyy' ), 5000 , null , 10 );
insert into emp values(7844,'turner','salesman ' , 7698 ,to_date('8-9-1981 ' , 'dd-mm-yyyy' ), 1500 , 0 , 30 );
insert into emp values(7876,'adams', 'clerk' , 7788 ,to_date('13-7-1987' , 'dd-mm-rr ' ) - 51 , 1100 , null , 20 );
insert into emp values(7900,'james', 'clerk' , 7698 ,to_date('3-12-1981' , 'dd-mm-yyyy' ), 950 , null , 30 );
insert into emp values(7902,'ford', 'analyst' , 7566 ,to_date('3-12-1981' , 'dd-mm-yyyy' ), 3000 , null , 20 );
insert into emp values(7934,'miller','clerk ' , 7782 ,to_date('23-1-1982' , 'dd-mm-yyyy' ), 1300 , null , 10 );
-
Jalankan perintah berikut untuk mengekstrak paket driver ODBC.
tar -zxvf polardb-odbc.tar.gz -
Jalankan perintah berikut untuk membuka folder
polardb-odbc.cd polardb-odbc -
Buka folder
samplesdi dalam folder driver ODBC.cd samples -
Kompilasi sampel uji. Setelah kompilasi selesai, dua file uji,
Test1danTest2, akan dihasilkan.make -
Jalankan
Test1danTest2../Test1 ## Run Test1 ./Test2 ## Run Test2Catatan-
Test1menunjukkan operasi Membuat, Membaca, Memperbarui, dan Menghapus (CRUD).Test2menunjukkan cara menggunakan kursor dan parameter output. -
Potongan kode berikut hanya untuk tujuan demonstrasi. Untuk kode lengkap, lihat file
Test1danTest2di foldersamplesdari paket driver.
-
Kode berikut merupakan contoh dari Test1:
...
int main(int argc, char* argv[])
{
/* Initialization */
RETCODE rCode;
HENV *hEnv = (HENV*)malloc(sizeof(HENV));
HDBC *hDBC = (HDBC*)malloc(sizeof(HDBC));
HSTMT *hStmt = (HSTMT*)malloc(sizeof(HSTMT));
Connect("POLARDB","user","",&hEnv,&hDBC);
rCode = SQLAllocStmt(*hDBC,hStmt);
rCode = SQLAllocHandle(SQL_HANDLE_STMT,*hDBC,hStmt);
/* CRUD operations */
ExecuteInsertStatement(&hStmt,(UCHAR*) "INSERT INTO EMP(EMPNO,ENAME) VALUES((SELECT COUNT(EMPNO) FROM EMP),'JACKSON')");
ExecuteUpdate(&hStmt,(UCHAR*) "UPDATE EMP SET ENAME='ODBC Test' WHERE EMPNO < 100");
ExecuteDeletStatement(&hStmt,(UCHAR*) "DELETE FROM EMP WHERE EMPNO<100");
ExecuteSimple_Select(&hStmt,(UCHAR*) "SELECT EMPNO,ENAME,JOB,MGR,HIREDATE FROM EMP where empno = 7369");
/* Close the connection */
Disconnect(&hEnv,&hDBC,&hStmt);
/* Clean up */
free(hEnv);
free(hDBC);
free(hStmt);
return 0;
}
Kode berikut merupakan contoh dari Test2:
int main(int argc, char* argv[])
{
/* Definitions */
RETCODE rCode;
SQLUSMALLINT a;
SQLINTEGER Num1IndOrLen;
SQLSMALLINT iTotCols = 0;
int j;
SDWORD cbData;
/* Initialization */
HENV *hEnv = (HENV*)malloc(sizeof(HENV));
HDBC *hDBC = (HDBC*)malloc(sizeof(HDBC));
HSTMT *hStmt = (HSTMT*)malloc(sizeof(HSTMT));
HSTMT *hStmt1 = (HSTMT*)malloc(sizeof(HSTMT));
/* Establish a connection */
Connect("POLARDB","user","***",&hEnv,&hDBC);
rCode = SQLAllocStmt(*hDBC,hStmt);
rCode = SQLAllocStmt(*hDBC,hStmt1);
rCode = SQLAllocHandle(SQL_HANDLE_STMT,*hDBC,hStmt);
rCode = SQLAllocHandle(SQL_HANDLE_STMT,*hDBC,hStmt1);
/* Begin */
ExecuteSimple_Select(&hStmt1,(UCHAR*) "BEGIN;");
/* Prepare */
RETCODE rc = SQLPrepare((*hStmt),(SQLCHAR*)"{ call refcur_inout_callee2(?,?)}",SQL_NTS);
rc = SQLBindParameter((*hStmt),1, SQL_PARAM_INPUT_OUTPUT, SQL_C_CHAR,SQL_REFCURSOR,0, 31,
strName, 31, &Num1IndOrLen);
rc = SQLBindParameter((*hStmt),2, SQL_PARAM_INPUT_OUTPUT, SQL_C_CHAR,SQL_REFCURSOR,0, 31,
&strName1, 31, &Num1IndOrLen);
Num1IndOrLen=0;
/* Execute */
rc = SQLExecute((*hStmt));
if(rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO)
{
printf("\nstrName _________ = %s\n",strName);
printf("\nstrName 1_________ = %s\n",strName1);
}
printf("\n First Cursor as OUT Parameter \n") ;