Import i eksport danych oraz inne operacje na bazie danych

Importowanie arkuszy Ms Excel

Polecenie xlsImport kopiuje dane z arkusza Microsoft Excel (XLS file) do tabeli bazy danych.

Składnia:

xlsImport(file, [alias.]table[, hasHeader = 0 | 1][, sheetNumber = N])
  • file - nazwa pliku XLS

  • alias - alias do bazy danych

  • table - nazwa tabeli, która ma być utworzona

  • hasHeader - 1 jeżeli pierwszy wiersz pliku CSV zawiera nazwę kolumny, 0 w innym przypadku. Domyślnie : 1

  • sheetNumber - liczba arkuszy, z których będą czytane dane. Domyślnie : 0 (the first sheet).

Importowanie plików CSV

Polecenie csvImport kopiuje dane z pliku CSV do tabeli bazy danych.

Składnia:

csvImport(file, alias.table[, hasHeader = 0 | 1][, rowsToAnalyze = n]
[,textSeparator = c][, separator = c][, breakOnError = 0 | 1][, deleteTable = 0 | 1]
columnNames = [s1, s2, ... ], dateFormat = s | { n1 : s1, n2 : s2, ... },
[,decimalSeparator = c][, columnType = {n1 : t1, n2 : t2, ... }]
[,language = aa | ab | af | am | ... ][, quotedString = 0 | 1]
[,encoding = "UTF-8" | "UTF-16" | ... ][, skipErroneous = 0 | 1]
[,newLinesAllowed = 0 | 1][, lineConverter = converterObject.converterMethod] )
  • file - nazwa pliku XLS

  • alias - alias do bazy danych

  • table - nazwa tabeli, która ma być utworzona

  • hasHeader - 1 jeżeli pierwszy wiersz pliku CSV zawiera nazwę kolumny, 0 w innym przypadku. Domyślnie : 1

  • rowsToAnalyze - liczba wierszy do analizy dla ustalenia typu kolumny. Jeżeli wszystkie wiersze są analizowane, ładowanie danych może wydłużyć się dwukrotnie w stosunku do przypadku gdy analizowany jest tylko pierwszy wiersz. Domyślnie : wszystkie wiersze.

  • textSeparator - znak, który oddziela tekstowe wpisy. Domyślnie : '"' (double quote), textSeperator=None jest równy z textSeparator="".

  • separator - znak, który oddziela kolejne kolumny. Domyślnie : ',' (comma)

  • breakOnError - jeżeli 1, import zatrzyma się przy napotkaniu błędu. Domyślnie: 1.

  • deleteTable - jeżeli 1, każda istniejąca tabela z taką samą nazwą zostanie nadpisana. Wartość 0 narzuca warunek jeżeli tabela wyjściowa istnieje. Domyślnie : 0

  • prefix - prefiks dla automatycznie generowanych nazw kolumn. Domyślnie : "column".

  • columnNames - nazwa wszystkich kolumn w pliku.

  • dateFormat - format wpisanych danych z tabeli importowanej. Dla każdego wpisu danych w tabeli każdy pojedynczy styl może być wyszczególniony lub każda kolumna może mieć inny format – w przypadku: n1, n2, ... jest 1-bazowy indks kolumny. Składnia stylu danych do jest do znalezienia pod adresem http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html. Domyślnie, następujące formaty są wypróbowane: "yyyy-MM-dd", "yyyy.MM.dd", "yyyy/MM/dd", "dd-MM-yyyy", "dd.MM.yyyy", "dd/MM/yyyy". Ciąg znaków w importowanej tabeli musi mieć idealnie dopasowany format deklaracji (lub domyślnie, jeżeli deklaracja nie została określona), aby był interpretowany jako dane wejściowe.

  • language - sprecyzowanie języka do interpretacji pól z datą (dla przypadku z formatem daty jak "ddMMMyyy"). Dwuliterowe, pisane z małych liter znaki są używane (ISO 639). Parametr może być ustawiony dla każdej z kolumn w postaci ciągu znaków (i.e. "aa | ab | af | am") lub jako słownik (i.e. {1:'aa', 2:'af' }). Więcej informacji na temat kodowania w językach znajdziesz w załączniku: Language Codes.

  • decimalSeparator - znak użyty jako separator dziesiętny. Domyślnie: '.'

  • columnType - typ kolumny - n1, n2, ... jest jednoznakowym indeksem kolumny, t1, t2, ... może być: LONGVARCHAR, DOUBLE lub DATE. Domyślnie typy kolumn określane są automatycznie.

  • quotedAsString - Jeżeli 1, wartości numeryczne w apostrofach interpretowane są jako ćiągi znaków. Domyślnie: 0.

  • encoding - kodowanie pliku wejściowego. Domyślnie : domyślne kodowanie serwera operacyjnego. Kompletna lista kodowania dostępna jest tu: http://download.oracle.com/javase/1.3/docs/guide/intl/encoding.doc.html

  • skipErroneous - Jeżeli 1, wiersze z błędami (takimi jak: błędny typ danych, błędna liczba wartości w kolumnach) są pomijane. Domyślnie: 0.

  • newLinesAllowed - Jeżeli 1, nowa linia między separatorami kolumn jest dozwolona. Domyślnie: 0.

  • maxWarnings - maksymalna liczba wyświetlanych ostrzeżeń. Domyślnie: 100.

  • lineConverter - umożliwia transformację linii do priorytowego importu (włączając zwielokrotnienie lub usuwanie). Konwerter linii zdefiniowany jest jako obiekt Java converterObject i należy do klasy converterClass. Klasa ta musi definiować metodę converterMethod, która wykonuje aktualną transformację. converterClass oraz converterObject musi definiować skrypt z priorytetowym wywołaniem komendy csvImport. Zobacz przykłady poniżej.

Notatka

Przy podawaniu ścieżki do pliku trzeba uważać na używanie połączeń slasha i małych liter. Jeśli wystąpi błąd (np. gdy w ścieżce mamy "\a") należy użyć podwójnego slasha.

Przykład 4.5. importowanie pliku CSV

				csvImport('c:\\some_data.csv', 'some_data', separator = ';', columnNames = ['first', 'second'], dateFormat = {1: 'MM-dd-yyyy'}, columnType = {1: DATE, 2: LONGVARCHAR})
            

Przykład 4.6. importowanie pliku CSV, ale z pominięciem pierwszych 10 linii

# Przykład 1 - pominięcie pierwszych 10 linii
class MyConverter:
def convert(self, line, linenum):
    # print '*'*5, linenum, repr(line)
    if linenum < 10:
        return '' # usunięcie linii
    else:
        return line
t = MyConverter()
csvImport(r'C:\test.csv', 'cup664', lineConverter=t.convert)
            

Eksportowanie danych do arkuszy MS Excel

xlsExport kopiuje dane z tabeli bazy danych do akrusza copies the data Microsoft Excel (XLS).

Składnia:

xlsExport([alias.]table, file[, hasHeader = 0 | 1][, sheetName = name]
[, xlsDateFormat=format_string][, use1904windowing = 0 | 1]) 
  • alias - alias do bazy danych

  • table - nazwa tabeli

  • file - nazwa pliku XLS, który ma być utworzony (razem z ścieżką)

  • hasHeader - 1 jeżeli pierwszy wiersz w pliku CSV powinien zawierać nazwę kolumny, 0 w innym przypadku. Domyślnie: 1

  • sheetName - nazwa arkusza do utworzenia w tabeli wyjściowej. Jeżeli pominięty lub wartość wynosi null, użyta będzie nazwa tabeli.

  • xlsDateFormat - ciąg określający format daty w pliku wyjściowym: y - rok, m - miesiąc, d - dzień. Domyślną wartością jest 'yyyy.m.d'.

  • use1904windowing - jeżeli 1, wszystkie daty będą zapisane używając systemu datowania w Excelu 1904 date system (np. daty składowane są jako liczby dni od Styczeń 1, 1904. Domyślnie: 0, np. daty składowane są jako liczby dni od Styczeń 1, 1900).

Eksportowanie danych do pliku CSV

Komenda csvExport kopiuje dane z tabeli bazy danych do pliku CSV.

Składnia:

csvExport(alias.table, file[, hasHeader = 0 | 1][, deleteFile = 0 | 1]
[,separator = c][, dateFormat = s][, decimalSeparator = c][, encoding = "UTF-8"|"UTF-16"| ... ]
[,language = aa | ab | af | am | ... ][, textSeparator = c][, forceTextSeparator = 0 | 1 ])
  • alias - alias do bazy danych

  • table - nazwa tabeli

  • file - nazwa pliku CSV, który ma być utworzony (razem z ścieżką)

  • hasHeader - 1 jeżeli pierwszy wiersz w pliku CSV powinien zawierać nazwę kolumny, 0 w innym przypadku. Domyślnie: 1

  • deleteFile - jeżeli 1, istnijący plik z taką samą nazwą będzie nadpisany. Domyślnie: 0

  • separator - znak, który oddziela sąsiadujące kolumny. Domyślnie: ',' (comma)

  • dateFormat - format wpisów dat. Składnia dla formatu dat można znaleźć na http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html. Domyślnie: "yyyy-MM-dd".

  • decimalSeparator - znak, używany jako separator dziesiętny. Domyślnie: '.'

  • encoding - kodowanie pliku wejściowego. Domyślnie : domyślne kodowanie serwera operacyjnego. Kompletna lista kodowania dostępna jest tu: http://download.oracle.com/javase/1.3/docs/guide/intl/encoding.doc.html

  • language - znaki dwuliterowe, pisane z małych liter (ISO 639) , które definiują język używany do interpretacji pół dat (dla przykładu format daty "ddMMMyyy"). Więcej informacji na temat kodowania dla języka znajdziesz w załączniku: Language Codes.

  • textSeparator - znak, który oddziela tekstowe wpisy. Domyślnie : '"' (double quote), textSeperator=None is equivalent to textSeparator="".

  • forceTextSeparator - jeżeli ustawione 0, textSeparator jest pomijany, chyba że eksportowany plik napotka na problemy podczas importowania. Default: 1 - textSeparator będzie użyty.

Przykład 4.7. Eksportowanie danych do pliku CSV

csvExport('some_data', 'c:\\some_data.csv', deleteFile = 1, hasHeader = 1, dateFormat = 'MM-dd-yyyy')
            

Otrzymanie listy kolumn dla tabeli bazy danych

Polecenie tableColumns zwraca listę obiektów z nazwami kolumn w wybranej tabeli bazy danych. Jeżeli określona tabela nie istnieje, wystąpi wyjątek. Zwracana lista jest zmienna.

Składnia:

tableColumns(alias.table)
  • table - nazwa tabeli.

  • alias - alias do bazy danych

Przykład 4.8. Otrzymanie listy kolumn dla tabeli bazy danych:

print tableColumns('iris')
>>> ['sepallength', 'sepalwidth', 'petallength', 'petalwidth', 'Class']
            

Usuwanie tabeli bazy danych

Polecenie tableDelete usuwa tabelę bazy danych. Zwraca 1 jeżeli tabela istnieje, oraz 0 gdy nie.

Składnia:

tableDelete(alias.table)
  • table - nazwa tabeli.

  • alias - alias do bazy danych

Przykład 4.9. Usuwanie tabeli bazy danych:

tableDelete('some_table')
            

Sprawdzanie istnienia tabeli bazy danych.

Polecenie tableExists sprawdza czy okreslona tabela istnieje i zwraca wynik dwójkowy.

Składnia:

tableExists(alias.table)
  • table - nazwa tabeli.

  • alias - alias do bazy danych

Przykład 4.10. Sprawdzanie istnienia tabeli bazy danych:

tableExists('some_table')