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 ‘$’