Spis treści
AdvancedMiner pozwala na pełną kontrolę baz danych przez SQL lub poprzez wbudowany eksplorator baz danych.
Alias bazy danych definiuje połączenie z bazą danych. Wymagany jest co najmniej jeden alias bazy danych, dla użytkownika, aby można było wykonywać transformacje danych. Bazy danych przechowują dane wejściowe i/lub wyjściowe. Dopuszczalne jest wykonywanie transformacji, które biorą dane wejściowe z kilku różnych baz danych i zapisują dane wyjściowe do jeszcze innej bazy danych. Warunkiem wykonania tego jest dostarczenie połączenia z bazą danych. Aby ustanowić połączenie z ścieżką URL bazy danych, użytkownik, hasło oraz sterownik bazy danych musi być konkretnie określony. Ustawienia te przechowywane są w aliasie bazy danych. Po zarejestrowaniu aliasu, użytkownik powinien tylko określić nazwę aliasu dla konkretnej bazy danych. Możliwe jest również utworzenie domyślnego aliasu, który używany jest do dostępu do bazy danych, w sytuacji gdy żaden inny alias jest określony. W przypadku pracy z jedną bazą danych, wygodne jest zarejestrowanie tylko domyślnego aliasu, bez używania jakichkolwiek innych aliasów.
Aliasy tworzone są w skryptach używających słów kluczowych dbAlias.
Składnia:
# domyślna nazwa aliasu dbAlias([driver_name, database_URL, user_name, user_password]) # spersonalizowana nazwa aliasu dbAlias([driver_name, database_URL, user_name, user_password], alias_name) # ustawienie aliasu jako domyśln dbAlias([driver_name, database_URL, user_name, user_password], alias_name, default = 1) # użycie zakodowanego ciągu hasła(użycie "/AdvancedMiner/Server/password_coder" script) dbAlias([driver_name, database_URL, user_name, user_password], passwordCoded) # użycie katalogu tabeli oraz schematu dbAlias([driver_name, database_URL, user_name, user_password, table_catalog, table_schema])
Przykład:
dbAlias(['com.mysql.jdbc.Driver', 'jdbc:mysql://127.0.0.1/test', '', ''],'myDB')
Zauważ, że aliasy mogą być definiowanie jako serwisy komponentów co jest opisane w rozdziale Komponenty. Odkąd funkcja aliasów wymaga parametru hasło, używanie skryptów nie jest bezpieczne. Zdecydowanie polecane jest użycie komponentów Serwisów do definiowania aliasów.
Dla bardziej zaawansowanej pracy z aliasami baz danych, istnieje obiekt AliasRegistry. Proszę odwołać się do części MetaModel dokumentacji javadoc – lista dostępnych funkcji.
Składnia:
dbAliasRegistry() # zwraca objekt AliasRegistry
Przykłady:
# uzyskanie aliasu z zadaną nazwą dbAliasRegistry().getAlias('myDB') # ustawienie domyślnego aliasu dbAliasRegistry().setDefaultAlias('server') # uzyskanie domyślnej nazwy aliasu dbAliasRegistry().getDefaultAliasName()
Użytkownik może uzyskać dostęp do danych bezpośrednio przy użyciu narzędzia Eksploratora Baz danych (Gałąź Aliasów w komponentach Serwisów). Przy pomocą tego narzędzia użytkownik może wykonać:
Używanie skryptów umożliwia automatyczne wykonywanie zapytań. Z procedurami SQL użytkownik może stworzyć sparametryzowane zapytania używając poleceń SQL. Zobacz opis poleceń SQL Opis języka SQL w bazie GDBase dla wbudowanej bazy danych wspieranej przez AdvancedMiner.
Składnia:
sql result, maxNumOfRows in alias use connectionNo: sqlQuery
result - zmienna (tabeli) gdzie wyniki zapytania będą składowanie Domyślnie: None.
maxNumOfRows - maksymalna liczba wierszy zwracana przez zapytanie. Domyślnie nie ma limitu ilości zwróconych wierszy.
alias - alias bazy danych - opcjonalnie. Gdy nie jest określony, używany jest alias domyślny.
connectionNo - użycie konkretnego numeru połączenia (dodatnia liczba całkowita). Opcjonalnie.
Przykład 4.1. An SQL statement with a single connection
tableDelete("x") tableDelete("y") try: sql use 1: create table x (a VARCHAR(10)) sql use 1: begin sql use 1: alter table x rename to y sql use 1: create table x (b VARCHAR(10)) sql use 1: commit finally: sql_close 1 print "finished..."
Output:
finished...
Zmienna wyniku nie jest tylko dwuwymiarową listą, ale także może być użyta do uzyskania informacji na temat kolumn. Używając polecenia:
print result.names
użytkownik może wyświetlić nazwy kolumn wyniku. Aby uzyskać więcej informacji na temat wyniku użyj polecenia:
print result.header
Przykład 4.2. Sql: names and header:
tableName = 'sqlStatementTest' tableDelete(tableName) # create new table sql: CREATE TABLE $tableName (id INTEGER, value INTEGER) # insert values for i in range(5): v = i * 10; sql: INSERT INTO $tableName (id, value) VALUES ($i, $v) # select from... sql result: SELECT * FROM $tableName print result.names print result.header
Output:
['id', 'value'] [{'columnTypeName': 'INTEGER', 'precision': None, 'displaySize': 2147483647, 'columnName': 'id', 'columnType': 4, 'isNullable': 0, 'scale': 0}, {'columnTypeName': 'INTEGER', 'precision': None, 'displaySize': 2147483647, 'columnName': 'value', 'columnType': 4, 'isNullable': 0, 'scale': 0}]
Ostatecznie możliwe jest wyświetlenie sformatowanego w prosty sposób całego wyniku tabeli przy pomocy polecenia:
print result
Przykład 4.3. sql statement:
tableName = 'sqlStatementTest' tableDelete(tableName) # create a new table sql: CREATE TABLE $tableName (id INTEGER, value INTEGER) # insert values for i in range(5): v = i * 10; sql: INSERT INTO $tableName (id, value) VALUES ($i, $v) # select from... sql result: SELECT * FROM $tableName strFormat = '%-10s%-10s' print strFormat % ('id','value') for row in result: print strFormat % (row[0],row[1]) # set constraints involved with returned records, default 2000 resords sql result, 2: SELECT * FROM $tableName print print strFormat % ('id','value') for row in result: print strFormat % (row[0],row[1])
Output:
id value 0 0 1 10 2 20 3 30 4 40 id value 0 0 1 10
W przykładach powyżej został użyty znak specjalny '$'. Używany jest on zawsze gdy użytkownik chce odwołać się do zmiennej globalnej.
Występuje jeszcze jedna okoliczność gdy '$' jest konieczny: Jeżeli użytkownik potrzebuje użyć znaku ‘#’. Ze względu na to, że skrypt interpretuje jako komentarz, musi być poprzedzony znakiem ‘$’