602SQL-Úplná dokumentace Index  

wb_data_transport

PHP

boolean wb_data_transport( resource connection, string move_descr_obj_name, mixed src_conn, mixed trg_conn, string src_schema, string trg_schema, string src_name, string trg_name, int src_format, int trg_format, int src_code, int trg_code, int flags )


Parametry

connection
Identifikátor otevřeného spojení získaný úspěšným voláním funkce wb_connect nebo wb_pconnect.
move_descr_obj_name
Jméno objektu definujícího přenos dat nebo NULL.
src_conn
Spojení na zdroj přenosu dat.
trg_conn
Spojení na cíl přenosu dat.
src_schema
Schéma v rámci zdroje přenosu dat.
trg_schema
Schéma v rámci cíle přenosu dat.
src_name
Tabulka, dotaz nebo soubor obsahující zdrojová data.
trg_name
Tabulka nebo soubor pro zápis dat.
src_format
Formát zdroje přenosu dat.
trg_format
Formát cíle přenosu dat.
src_code
Kódování ve zdrojovém souboru.
trg_code
Kódování v cílovém souboru.
flags
Příznaky ovlivňující funkci.


Popis

Funkce slouží k hromadnému přenášení dat mezi 602SQL servery, ODBC zdroji dat a soubory v různých formátech.

Popis přenosu je obsažen v objektu move_descr_obj_name. Pokud move_descr_obj_name je zadán (není NULL), pak funkce přečte tento popis z databáze připojené pomocí identifikátoru spojení na databázi connection. Údaje zadané v popisu přenosu se následně upraví podle hodnot parametrů funkce počínaje parametrem src_schema. Pokud některý parametr má hodnotu NULL nebo -1, pak se ignoruje a použije se údaj z popisu přenosu.

Parametry src_conn a trg_conn jsou spojení na zdroj a cíl dat. Smějí mít hodnotu NULL pouze tehdy, je-li zdrojem resp. cílem je textový nebo DBF soubor.

Pokud move_descr_obj_name je NULL, pak funkce vytvoří na základě předaných parametrů implicitní návrh přenosu, stejně jak jej vytváří interaktivní návrhář. Hodnota parametru connection se pak ignoruje.

Je-li v parametru flags nastaven bit 1, pak při přenosu do databázové tabulky v 602SQL se nebudou indexy upravovat průběžně, ale zahodí se a znovu se vytvoří po dokončení přenosu. V závislosti na množství dat v tabulce před přenosem a na množství přenášených dat to může zrychlit nebo zpomalit celkový čas operace.

Typ a formát zdroje a cíle přenosu dat popisují parametry src_format a trg_format podle této tabulky:
IMPEXP_FORMAT_WINBASE 0 soubor ve vnitřním formátu 602SQL (TDT)
IMPEXP_FORMAT_TEXT_COLUMNS 1 textový soubor ve sloupcovém formátu
IMPEXP_FORMAT_TEXT_CSV 2 textový soubor ve formátu CSV (údaje oddělené čárkami)
IMPEXP_FORMAT_DBASE 3 soubor ve formátu dBase IV (DBF)
IMPEXP_FORMAT_FOXPRO 4 soubor ve formátu FoxPro 2.0 (DBF)
IMPEXP_FORMAT_ODBC 5 tabulka v ODBC zdroji dat
IMPEXP_FORMAT_CURSOR 6 dotaz uložený v databázi 602SQL (pouze pro src_format)
IMPEXP_FORMAT_ODBCVIEW 7 dotaz v ODBC zdroji dat
IMPEXP_FORMAT_TABLE 10 tabulka v databázi 602SQL

Na základě hodnoty těchto parametrů jsou zdroj a cíl dat popsány ostatními parametry jedním ze tří způsobů:

Tabulka nebo dotaz v databázi 602SQL

Tabulka může být zdrojem nebo cílem přenosu dat, dotaz pouze zdrojem. Parametrem src_conn nebo trg_conn je pak identifikátor spojení na 602SQL server (tj. výsledek funkce wb_connect nebo wb_pconnect), parametrem src_schema nebo trg_schema je schéma na tomto serveru a parametrem src_name nebo trg_name je jméno tabulky nebo dotazu v tomto schématu. Hodnota parametru src_code nebo trg_code se ignoruje.

Zadaná schémata a zdrojová tabulka nebo dotaz musejí existovat. Je-li cílem přenosu dat databázová tabulka, která dosud neexistuje, je vytvořena podle návrhu přenosu.

Tabulka nebo dotaz zpřístupněný přes ODBC

Tabulka může být zdrojem nebo cílem přenosu dat, dotaz pouze zdrojem. Parametrem src_conn nebo trg_conn je pak spojení na ODBC zdroj dat popsané:

Je-li předáno pole, tak funkce wb_data_transport otevře spojení na ODBC zdroj dat, provede přenos a spojení zavře. Při předání otevřeného spojení na ODBC zdroj dat toto spojení není touto funkcí zavřeno (zavírá se pomocí wb_odbc_disconnect).

Parametrem src_schema nebo trg_schema je případné schéma nebo jiný kvalifikátor jmen objektů v tomto ODBC zdroji dat a parametrem src_name nebo trg_name je jméno tabulky nebo dotazu. Pokud ODBC zdroj dat nepoužívá schémata ani jiné kvalifikátory, pak parametrem určujícím toto schéma může být prázdný řetězec. Hodnota parametru src_code nebo trg_code se ignoruje.

Zdrojový i cílový objekt musejí existovat.

Soubor v některém z podporovaných formátů

Parametr src_name nebo trg_name obsahuje jméno souboru, obvykle s plnou cestou. Hodnoty parametrů src_conn a src_schema nebo trg_conn a trg_schema se ignorují. Hodnota parametru src_code nebo trg_code popisuje kódování souboru takto:
hodnota kódování
0 Windows cp1250 (východoevropské jazyky)
1 Windows cp1252 (západoevropské jazyky)
2 ASCII
3 ISO 8859-2 (východoevropské jazyky)
4 DOS cp852 (LATIN 2) (východoevropské jazyky)
5 ISO 8859-1 (západoevropské jazyky)
6 UTF-8
7 UCS-2
6 UCS-4

Pro funkci platí veškerá omezení jako pro Data_transport.



Návratová hodnota

TRUE v případě úspěšně provedeného přenosu, nebo FALSE v případě výskytu chyby.



Příklad

Přenos dat z ODBC zdroje dat do tabulky v 602SQL (1. způsob - mám vytvořený objekt typu přenos (zde nazvaný MySQLODBC_602tab) - lepší v tom, že lze předem přenos vyzkoušet ve Vývojovém prostředí):

  $conn=wb_connect($cfg_dbconn_database,$cfg_dbconn_application,$cfg_dbconn_username,$cfg_dbconn_password) or die;
  $odbc_resource=wb_odbc_connect("MySQL test","uzivatel","heslo") or die("MySQL odbc connect failed");

  $vysledek = wb_data_transport(
    $conn,
    "MySQLODBC_602tab",
    $odbc_resource,
    $conn,
    "",
    "",
    "",
    "",
    NULL,
    NULL,
    -1,
    -1,
    -1);
  if( $vysledek==FALSE ) { /* ošetření chyby */ }
  else { echo "přenos proběhl bez chyb\n"; };
  wb_odbc_disconnect($odbc_resource);

Přenos dat z ODBC zdroje dat do tabulky v 602SQL (2. způsob - nemusím mít vytvořený objekt typu přenos, ale pokud přenos neprojde, obtížně se hledá chyba):

  $conn=wb_connect($cfg_dbconn_database,$cfg_dbconn_application,$cfg_dbconn_username,$cfg_dbconn_password) or die;

  $vysledek = wb_data_transport(
    $conn,
    NULL,
    array("dsn" => "nazev_odbc_zdroje_dat","uid" => "uzivatel","pwd" => "heslo"),
    $conn,
    "odbc_schema",
    "aplikace",
    "odbc_tabulka",
    "tabulka",
    IMPEXP_FORMAT_ODBC,
    IMPEXP_FORMAT_TABLE,
    -1,
    -1,
    1); 
  if( $vysledek==FALSE ) { /* ošetření chyby */ }
  else { echo "přenos proběhl bez chyb\n"; }