SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
Работа с источниками данных
в GLPK
v 0.2 2015-04-23
План занятия
• Как устроены таблицы
• Поддерживаемые источники данных
• Использование данных в текстовых файлах
• Интерфейс доступа к данным ODBC
• Использование таблиц данных в ODBC-источниках
• Создание источника данных ODBC
• Особенности работы с данными в Excel
• Особенности работы с данными в Access
2
Работа с источниками данных
Модель.mod
Данные.dat
GLPK / AMPL +
решатель
Отчеты по
решению
Вывод в консоль
Модель.mod
GLPK / AMPL +
решатель
Таблица данных
Таблица данных
Визуализация,
анализ
3
Как устроены таблицы данных
• В строках таблицы находятся записи о некоторых объектах (товары, заказы, …)
• Столбцы таблицы – это характеристики (параметры) объекта
• В таблице есть уникальный столбец (один или несколько) – первичный ключ
• Первичный ключ используются для ссылки на конкретный объект
• Множества в GLPK – то же самое, что ключевые столбцы в таблицах
• Параметры в GLPK считываются из столбцов таблицы
Код Название Цена
1 Хлеб 30
2 Молоко 50
3 Масло 80
Код
периода
Код
товара
Количество
1 1 1000
1 2 500
1 3 200
2 1 1200
2 2 600
2 3 300
3 1 1500
3 2 700
3 3 400
Код Период
1 Январь
2 Февраль
3 Март
Периоды
Товары
Продажи
4
Описание таблицы данных в GLPK
• Для чтения данных:
table <имя> IN ‘<драйвер>’ ‘<строка подключения>’
‘имя таблицы в источнике данных’ :
<имя объекта GLPK> ~ <имя столбца таблицы>;
• Для записи данных:
table <имя> {<индексирующее выражение>} OUT
‘<драйвер>’ ‘<строка подключения>’
‘команды для очистки старых данных’
‘имя таблицы в источнике данных’ :
<имя объекта GLPK> ~ <имя столбца таблицы>;
5
Поддерживаемые GLPK источники данных
• Прямая поддержка (требуется только GLPK):
– Text/CSV
– MySQL
• Поддержка через ODBC:
– Excel
– Access
– dBase
– sqlite
– любая промышленная СУБД
• ODBC – это стандарт для windows-систем.
• Для unix-like систем (Linux, MacOS X) нужен iODBC, unixODBC
• см. http://en.wikibooks.org/wiki/GLPK/ODBC
6
Текстовый формат
• Формат данных (файл orfc.csv)
csv = Comma Separated Values; GLPK поддерживает только американский формат
разделителей
• Загрузка данных в модель:
"Код","code","name","cal","prota","protv","fata","fatv","carb"
1,2,"Баранки, сушки",272,0.00,8.60,0.00,0.50,56.80
2,194,"Батоны",240,0.00,7.50,0.00,1.00,49.50
3,193,"Булки городские",270,0.00,7.90,0.00,1.90,53.00
7
Особенности текстового формата
• Простой, человеко-читаемый
• Напрямую поддерживается
• Excel создает CSV-файлы «русского формата», которые не поддерживаются GLPK
8
Стандартные программные
интерфейсы доступа к данным
• ODBC – Open Database Connectivity (X/Open, 1990)
• JDBC – часть Java Development Kit (Sun, 1997)
Клиент (front-end)
ODBC-клиент
(приложение)
ODBC-
драйвер
SQL
Данные
CSV, DBF,
XLS
MS Access,
FoxPro,
Btrieve
ODBC API
ODBC SDK
SQL Server, Oracle,
DB2, MySQL…
Сервер
(Back-End)
GLPK, Access,
Excel…
Команды
ODBC API
CSV, DBF,
XLS
MS Access,
FoxPro,
Btrieve
9
Чтение данных из источника (GLPK)
• Описание таблицы для чтения данных:
table <имя> IN ‘<драйвер>’ ‘<строка подключения>’
‘имя таблицы’ :
<имя объекта GLPK> ~ <имя столбца таблицы>;
set I dimen 2;
param st{I};
table t IN 'ODBC' 'FILEDSN=supply.dsn'
'stock' :
I <- [product, period],
st ~ quantity;
столбцы, определяющие индексы
элементов множества (первичный ключ)product period quantity
A 1 10
A 2 12
B 1 100
B 2 101
Первичный ключ (Primary Key) – столбец,
или несколько столбцов, уникальным
образом идентифицирующих каждую
запись в таблице данных 10
Чтение данных из источника (GLPK)
• Вместо имени таблицы можно указывать SQL-запрос на выборку данных:
table <имя> IN ‘<драйвер>’ ‘<строка подключения>’
‘SQL-запрос на выборку’ :
<имя объекта GLPK> ~ <имя столбца таблицы>;
set I dimen 2;
param st{I};
table t IN 'ODBC' 'FILEDSN=supply.dsn'
'SELECT product, period, quantity'
' FROM stock' :
I <- [product, period], st ~ quantity;
столбцы, определяющие индексы
элементов множества (первичный ключ)
product period quantity
A 1 10
A 2 12
B 1 100
B 2 101
11
Запись данных в таблицу (GLPK)
table <имя> {<индексирующее выражение>} OUT
‘<драйвер>’ ‘<строка подключения>’
‘SQL-запрос для очистки данных’
‘имя таблицы’ :
<имя объекта GLPK> ~ <имя столбца таблицы>;
table t {p in P, t in T} OUT 'ODBC'
'FILEDSN=supply.dsn'
'DELETE FROM stock;'
'stock' :
p ~ product, t ~ period,
st[p, t] ~ quantity;
http://en.wikibooks.org/wiki/GLPK/Table_Statement
product period quantity
A 1 10
A 2 12
B 1 100
B 2 101
set P := A B;
set T := 1..2;
param st := A 1 10, A 2 12, B 1 100, B 2 101;
Ключевые столбцы определяются
индексирующим выражением
Иногда требуются другие способы обновления данных, они описаны здесь: 12
Создание источника данных ODBC
• Источник данных (Data Source Name) – описание подключения к данным
• В Windows программу настройки источников можно запустить командой:
odbcad32.exe
• Если вы используете 32-битную версию Office с 64-битной версией
Windows x64, то программу настройки надо запускать из каталога
%windir%SysWOW64
• Создавайте файловые DSN
13
Содержимое файла DSN
• Рекомендуем использовать относительные пути к файлам Excel и Access
• Если собираетесь писать в файл Excel - убедитесь, что он не read only
14
Особенности Excel
• Не поддерживает DELETE FROM
• Не поддерживает DROP TABLE IF EXISTS
• Автоматически определяет типы данных при чтении (может определять
неправильно)
• Не работает при открытой книге
• Рекомендуем использовать формат файла Excel 2003 (xls)
Типы данных при описании столбцов новой таблице
CURRENCY
DATETIME
LOGICAL
NUMBER
TEXT
http://msdn.microsoft.com/en-us/library/ms712640(v=vs.85).aspx
15
Чтение данных из таблицы Excel (GLPK)
• Описание таблицы для чтения данных:
table <имя> IN ‘<драйвер>’ ‘<строка подключения>’
‘[имя таблицы]’ :
<имя объекта GLPK> ~ <имя столбца таблицы>;
• Правила описания имени таблицы:
– Если таблица содержится на отдельном листе с именем Data, то имя таблицы в GLPK
надо указывать так: [Data$]
– Если таблица содержится в именованном диапазоне Data (имя задано в диспетчере
имен), то имя таблицы в GLPK надо указывать так: [Data], т.е. без '$' в конце
– Можно использовать адреса диапазонов. Например, таблица, находящаяся в диапазоне
A1:F10 листа MyData, должна быть указана так: [MyData$A1:F10]
– Имена, заданные для таблиц (Ctrl-T) в Excel не поддерживаются
set I dimen 2;
param st{I};
table t IN 'ODBC' 'FILEDSN=supply.dsn'
'[stock$]' :
I <- [product, period], st ~ quantity;
Пример чтения данных из таблицы на отдельном листе stock
product period quantity
A 1 10
A 2 12
B 1 100
B 2 101
16
Запись данных в таблицу Excel (GLPK)
table <имя> {<индексирующее выражение>} OUT
‘<драйвер>’ ‘<строка подключения>’
‘SQL-запрос для удаления и создания таблицы’
‘[имя таблицы$]’ :
<имя объекта GLPK> ~ <имя столбца таблицы>;
table t {p in P, t in T} OUT 'ODBC' 'FILEDSN=supply.dsn'
'DROP TABLE stock;'
'CREATE TABLE [stock]'
'(product TEXT, period NUMBER, quantity NUMBER);'
'[stock$]' :
p ~ product, t ~ period, st[p, t] ~ quantity;
product period quantity
A 1 10
A 2 12
B 1 100
B 2 101
set P := A B;
set T := 1..2;
param st := A 1 10, A 2 12, B 1 100, B 2 101;
таблица будет создана на отдельном листе
17
Особенности Access
Microsoft Access data type
Data type
(CREATETABLE)
BIT BIT
COUNTER COUNTER
CURRENCY CURRENCY
DATE/TIME DATETIME
LONG TEXT LONGTEXT
MEMO LONGTEXT
NUMBER (FieldSize= SINGLE) SINGLE
NUMBER (FieldSize= DOUBLE) DOUBLE
NUMBER (FieldSize= BYTE) UNSIGNED BYTE
NUMBER (FieldSize= INTEGER) SHORT
NUMBER (FieldSize= LONG INTEGER) LONG
NUMERIC NUMERIC
TEXT VARCHAR
http://msdn.microsoft.com/en-us/library/ms714540(v=vs.85).aspx
• Access поддерживает DELETE FROM,
поэтому можно просто создавать
таблицы в графическом конструкторе
Access
• При необходимости программного
создания, используйте типы данных,
указанные в таблице
18

Mais conteúdo relacionado

Mais procurados

Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данныхAlex Polorotov
 
Основы создания витрин данных - создание схемы звезда и снежинка
Основы создания витрин данных - создание  схемы звезда и снежинкаОсновы создания витрин данных - создание  схемы звезда и снежинка
Основы создания витрин данных - создание схемы звезда и снежинкаSergey Sukharev
 
0031
00310031
0031JIuc
 
How To Make Your Dashboard Smaller
How To Make Your Dashboard SmallerHow To Make Your Dashboard Smaller
How To Make Your Dashboard SmallerGreenM
 
создание запросов, отчётов, Web страниц
создание запросов, отчётов, Web страницсоздание запросов, отчётов, Web страниц
создание запросов, отчётов, Web страницVladimir Burdaev
 
акцесс изменён
акцесс изменёнакцесс изменён
акцесс изменёнminura19122010
 
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.mikhaelsmirnov
 
0013
00130013
0013JIuc
 

Mais procurados (10)

Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данных
 
Основы создания витрин данных - создание схемы звезда и снежинка
Основы создания витрин данных - создание  схемы звезда и снежинкаОсновы создания витрин данных - создание  схемы звезда и снежинка
Основы создания витрин данных - создание схемы звезда и снежинка
 
24 25 запросы
24 25 запросы24 25 запросы
24 25 запросы
 
0031
00310031
0031
 
How To Make Your Dashboard Smaller
How To Make Your Dashboard SmallerHow To Make Your Dashboard Smaller
How To Make Your Dashboard Smaller
 
создание запросов, отчётов, Web страниц
создание запросов, отчётов, Web страницсоздание запросов, отчётов, Web страниц
создание запросов, отчётов, Web страниц
 
акцесс изменён
акцесс изменёнакцесс изменён
акцесс изменён
 
B pwin&ramus
B pwin&ramusB pwin&ramus
B pwin&ramus
 
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
 
0013
00130013
0013
 

Destaque

Визуализация данных на географических картах в Tableau. Следующий уровень.
Визуализация данных на географических картах в Tableau. Следующий уровень.Визуализация данных на географических картах в Tableau. Следующий уровень.
Визуализация данных на географических картах в Tableau. Следующий уровень.Gleb Zakhodiakin
 
Визуализация данных на географических картах в Tableau (базовый уровень)
Визуализация данных на географических картах в Tableau (базовый уровень)Визуализация данных на географических картах в Tableau (базовый уровень)
Визуализация данных на географических картах в Tableau (базовый уровень)Gleb Zakhodiakin
 
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)Gleb Zakhodiakin
 
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозированияПрогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозированияGleb Zakhodiakin
 
Прогнозирование - Лекция 4. Регрессионные модели временных рядов
Прогнозирование - Лекция 4. Регрессионные модели временных рядовПрогнозирование - Лекция 4. Регрессионные модели временных рядов
Прогнозирование - Лекция 4. Регрессионные модели временных рядовGleb Zakhodiakin
 
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...Gleb Zakhodiakin
 
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессияПрогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессияGleb Zakhodiakin
 
Прогнозирование - Лекция 3. Множественная регрессия
Прогнозирование - Лекция 3. Множественная регрессияПрогнозирование - Лекция 3. Множественная регрессия
Прогнозирование - Лекция 3. Множественная регрессияGleb Zakhodiakin
 

Destaque (9)

Визуализация данных на географических картах в Tableau. Следующий уровень.
Визуализация данных на географических картах в Tableau. Следующий уровень.Визуализация данных на географических картах в Tableau. Следующий уровень.
Визуализация данных на географических картах в Tableau. Следующий уровень.
 
Визуализация данных на географических картах в Tableau (базовый уровень)
Визуализация данных на географических картах в Tableau (базовый уровень)Визуализация данных на географических картах в Tableau (базовый уровень)
Визуализация данных на географических картах в Tableau (базовый уровень)
 
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
 
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозированияПрогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
 
Прогнозирование - Лекция 4. Регрессионные модели временных рядов
Прогнозирование - Лекция 4. Регрессионные модели временных рядовПрогнозирование - Лекция 4. Регрессионные модели временных рядов
Прогнозирование - Лекция 4. Регрессионные модели временных рядов
 
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
 
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессияПрогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
 
Прогнозирование - Лекция 3. Множественная регрессия
Прогнозирование - Лекция 3. Множественная регрессияПрогнозирование - Лекция 3. Множественная регрессия
Прогнозирование - Лекция 3. Множественная регрессия
 
TextMining with R
TextMining with RTextMining with R
TextMining with R
 

Semelhante a Взаимодействие с источниками данных в GLPK

базы данных в Delphi
базы данных в Delphiбазы данных в Delphi
базы данных в DelphiAeka227
 
0041
00410041
0041JIuc
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьTanya Denisyuk
 
Витрины данных - загрузка данных, разработка процессов ETL
Витрины данных - загрузка данных, разработка процессов ETLВитрины данных - загрузка данных, разработка процессов ETL
Витрины данных - загрузка данных, разработка процессов ETLSergey Sukharev
 
Управление Данными. Лекция 7
Управление Данными. Лекция 7Управление Данными. Лекция 7
Управление Данными. Лекция 7Dmitriy Krukov
 
Дмитрий Долгов
Дмитрий ДолговДмитрий Долгов
Дмитрий ДолговCodeFest
 
0039
00390039
0039JIuc
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Fedor Lavrentyev
 
ekonomicheskie_finansovie_rascheti_excel.pdf
ekonomicheskie_finansovie_rascheti_excel.pdfekonomicheskie_finansovie_rascheti_excel.pdf
ekonomicheskie_finansovie_rascheti_excel.pdfValentinaTirsu1
 
лабораторная работа 2
лабораторная работа 2лабораторная работа 2
лабораторная работа 2student_kai
 
Разработка бизнес приложений (5)
Разработка бизнес приложений (5)Разработка бизнес приложений (5)
Разработка бизнес приложений (5)Alexander Gornik
 
Лекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderЛекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderАлександр Брич
 
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...Dmitry Andreev
 
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest
 
0045
00450045
0045JIuc
 

Semelhante a Взаимодействие с источниками данных в GLPK (20)

Vba 07
Vba 07Vba 07
Vba 07
 
лабраб 4
лабраб 4лабраб 4
лабраб 4
 
Drupal Migrate
Drupal MigrateDrupal Migrate
Drupal Migrate
 
Расширение библиотеки Slick
Расширение библиотеки SlickРасширение библиотеки Slick
Расширение библиотеки Slick
 
базы данных в Delphi
базы данных в Delphiбазы данных в Delphi
базы данных в Delphi
 
0041
00410041
0041
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
Витрины данных - загрузка данных, разработка процессов ETL
Витрины данных - загрузка данных, разработка процессов ETLВитрины данных - загрузка данных, разработка процессов ETL
Витрины данных - загрузка данных, разработка процессов ETL
 
Управление Данными. Лекция 7
Управление Данными. Лекция 7Управление Данными. Лекция 7
Управление Данными. Лекция 7
 
Дмитрий Долгов
Дмитрий ДолговДмитрий Долгов
Дмитрий Долгов
 
0039
00390039
0039
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
 
ekonomicheskie_finansovie_rascheti_excel.pdf
ekonomicheskie_finansovie_rascheti_excel.pdfekonomicheskie_finansovie_rascheti_excel.pdf
ekonomicheskie_finansovie_rascheti_excel.pdf
 
базы данных
базы данныхбазы данных
базы данных
 
лабораторная работа 2
лабораторная работа 2лабораторная работа 2
лабораторная работа 2
 
Разработка бизнес приложений (5)
Разработка бизнес приложений (5)Разработка бизнес приложений (5)
Разработка бизнес приложений (5)
 
Лекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderЛекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, Loader
 
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...
 
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
 
0045
00450045
0045
 

Взаимодействие с источниками данных в GLPK

  • 1. Работа с источниками данных в GLPK v 0.2 2015-04-23
  • 2. План занятия • Как устроены таблицы • Поддерживаемые источники данных • Использование данных в текстовых файлах • Интерфейс доступа к данным ODBC • Использование таблиц данных в ODBC-источниках • Создание источника данных ODBC • Особенности работы с данными в Excel • Особенности работы с данными в Access 2
  • 3. Работа с источниками данных Модель.mod Данные.dat GLPK / AMPL + решатель Отчеты по решению Вывод в консоль Модель.mod GLPK / AMPL + решатель Таблица данных Таблица данных Визуализация, анализ 3
  • 4. Как устроены таблицы данных • В строках таблицы находятся записи о некоторых объектах (товары, заказы, …) • Столбцы таблицы – это характеристики (параметры) объекта • В таблице есть уникальный столбец (один или несколько) – первичный ключ • Первичный ключ используются для ссылки на конкретный объект • Множества в GLPK – то же самое, что ключевые столбцы в таблицах • Параметры в GLPK считываются из столбцов таблицы Код Название Цена 1 Хлеб 30 2 Молоко 50 3 Масло 80 Код периода Код товара Количество 1 1 1000 1 2 500 1 3 200 2 1 1200 2 2 600 2 3 300 3 1 1500 3 2 700 3 3 400 Код Период 1 Январь 2 Февраль 3 Март Периоды Товары Продажи 4
  • 5. Описание таблицы данных в GLPK • Для чтения данных: table <имя> IN ‘<драйвер>’ ‘<строка подключения>’ ‘имя таблицы в источнике данных’ : <имя объекта GLPK> ~ <имя столбца таблицы>; • Для записи данных: table <имя> {<индексирующее выражение>} OUT ‘<драйвер>’ ‘<строка подключения>’ ‘команды для очистки старых данных’ ‘имя таблицы в источнике данных’ : <имя объекта GLPK> ~ <имя столбца таблицы>; 5
  • 6. Поддерживаемые GLPK источники данных • Прямая поддержка (требуется только GLPK): – Text/CSV – MySQL • Поддержка через ODBC: – Excel – Access – dBase – sqlite – любая промышленная СУБД • ODBC – это стандарт для windows-систем. • Для unix-like систем (Linux, MacOS X) нужен iODBC, unixODBC • см. http://en.wikibooks.org/wiki/GLPK/ODBC 6
  • 7. Текстовый формат • Формат данных (файл orfc.csv) csv = Comma Separated Values; GLPK поддерживает только американский формат разделителей • Загрузка данных в модель: "Код","code","name","cal","prota","protv","fata","fatv","carb" 1,2,"Баранки, сушки",272,0.00,8.60,0.00,0.50,56.80 2,194,"Батоны",240,0.00,7.50,0.00,1.00,49.50 3,193,"Булки городские",270,0.00,7.90,0.00,1.90,53.00 7
  • 8. Особенности текстового формата • Простой, человеко-читаемый • Напрямую поддерживается • Excel создает CSV-файлы «русского формата», которые не поддерживаются GLPK 8
  • 9. Стандартные программные интерфейсы доступа к данным • ODBC – Open Database Connectivity (X/Open, 1990) • JDBC – часть Java Development Kit (Sun, 1997) Клиент (front-end) ODBC-клиент (приложение) ODBC- драйвер SQL Данные CSV, DBF, XLS MS Access, FoxPro, Btrieve ODBC API ODBC SDK SQL Server, Oracle, DB2, MySQL… Сервер (Back-End) GLPK, Access, Excel… Команды ODBC API CSV, DBF, XLS MS Access, FoxPro, Btrieve 9
  • 10. Чтение данных из источника (GLPK) • Описание таблицы для чтения данных: table <имя> IN ‘<драйвер>’ ‘<строка подключения>’ ‘имя таблицы’ : <имя объекта GLPK> ~ <имя столбца таблицы>; set I dimen 2; param st{I}; table t IN 'ODBC' 'FILEDSN=supply.dsn' 'stock' : I <- [product, period], st ~ quantity; столбцы, определяющие индексы элементов множества (первичный ключ)product period quantity A 1 10 A 2 12 B 1 100 B 2 101 Первичный ключ (Primary Key) – столбец, или несколько столбцов, уникальным образом идентифицирующих каждую запись в таблице данных 10
  • 11. Чтение данных из источника (GLPK) • Вместо имени таблицы можно указывать SQL-запрос на выборку данных: table <имя> IN ‘<драйвер>’ ‘<строка подключения>’ ‘SQL-запрос на выборку’ : <имя объекта GLPK> ~ <имя столбца таблицы>; set I dimen 2; param st{I}; table t IN 'ODBC' 'FILEDSN=supply.dsn' 'SELECT product, period, quantity' ' FROM stock' : I <- [product, period], st ~ quantity; столбцы, определяющие индексы элементов множества (первичный ключ) product period quantity A 1 10 A 2 12 B 1 100 B 2 101 11
  • 12. Запись данных в таблицу (GLPK) table <имя> {<индексирующее выражение>} OUT ‘<драйвер>’ ‘<строка подключения>’ ‘SQL-запрос для очистки данных’ ‘имя таблицы’ : <имя объекта GLPK> ~ <имя столбца таблицы>; table t {p in P, t in T} OUT 'ODBC' 'FILEDSN=supply.dsn' 'DELETE FROM stock;' 'stock' : p ~ product, t ~ period, st[p, t] ~ quantity; http://en.wikibooks.org/wiki/GLPK/Table_Statement product period quantity A 1 10 A 2 12 B 1 100 B 2 101 set P := A B; set T := 1..2; param st := A 1 10, A 2 12, B 1 100, B 2 101; Ключевые столбцы определяются индексирующим выражением Иногда требуются другие способы обновления данных, они описаны здесь: 12
  • 13. Создание источника данных ODBC • Источник данных (Data Source Name) – описание подключения к данным • В Windows программу настройки источников можно запустить командой: odbcad32.exe • Если вы используете 32-битную версию Office с 64-битной версией Windows x64, то программу настройки надо запускать из каталога %windir%SysWOW64 • Создавайте файловые DSN 13
  • 14. Содержимое файла DSN • Рекомендуем использовать относительные пути к файлам Excel и Access • Если собираетесь писать в файл Excel - убедитесь, что он не read only 14
  • 15. Особенности Excel • Не поддерживает DELETE FROM • Не поддерживает DROP TABLE IF EXISTS • Автоматически определяет типы данных при чтении (может определять неправильно) • Не работает при открытой книге • Рекомендуем использовать формат файла Excel 2003 (xls) Типы данных при описании столбцов новой таблице CURRENCY DATETIME LOGICAL NUMBER TEXT http://msdn.microsoft.com/en-us/library/ms712640(v=vs.85).aspx 15
  • 16. Чтение данных из таблицы Excel (GLPK) • Описание таблицы для чтения данных: table <имя> IN ‘<драйвер>’ ‘<строка подключения>’ ‘[имя таблицы]’ : <имя объекта GLPK> ~ <имя столбца таблицы>; • Правила описания имени таблицы: – Если таблица содержится на отдельном листе с именем Data, то имя таблицы в GLPK надо указывать так: [Data$] – Если таблица содержится в именованном диапазоне Data (имя задано в диспетчере имен), то имя таблицы в GLPK надо указывать так: [Data], т.е. без '$' в конце – Можно использовать адреса диапазонов. Например, таблица, находящаяся в диапазоне A1:F10 листа MyData, должна быть указана так: [MyData$A1:F10] – Имена, заданные для таблиц (Ctrl-T) в Excel не поддерживаются set I dimen 2; param st{I}; table t IN 'ODBC' 'FILEDSN=supply.dsn' '[stock$]' : I <- [product, period], st ~ quantity; Пример чтения данных из таблицы на отдельном листе stock product period quantity A 1 10 A 2 12 B 1 100 B 2 101 16
  • 17. Запись данных в таблицу Excel (GLPK) table <имя> {<индексирующее выражение>} OUT ‘<драйвер>’ ‘<строка подключения>’ ‘SQL-запрос для удаления и создания таблицы’ ‘[имя таблицы$]’ : <имя объекта GLPK> ~ <имя столбца таблицы>; table t {p in P, t in T} OUT 'ODBC' 'FILEDSN=supply.dsn' 'DROP TABLE stock;' 'CREATE TABLE [stock]' '(product TEXT, period NUMBER, quantity NUMBER);' '[stock$]' : p ~ product, t ~ period, st[p, t] ~ quantity; product period quantity A 1 10 A 2 12 B 1 100 B 2 101 set P := A B; set T := 1..2; param st := A 1 10, A 2 12, B 1 100, B 2 101; таблица будет создана на отдельном листе 17
  • 18. Особенности Access Microsoft Access data type Data type (CREATETABLE) BIT BIT COUNTER COUNTER CURRENCY CURRENCY DATE/TIME DATETIME LONG TEXT LONGTEXT MEMO LONGTEXT NUMBER (FieldSize= SINGLE) SINGLE NUMBER (FieldSize= DOUBLE) DOUBLE NUMBER (FieldSize= BYTE) UNSIGNED BYTE NUMBER (FieldSize= INTEGER) SHORT NUMBER (FieldSize= LONG INTEGER) LONG NUMERIC NUMERIC TEXT VARCHAR http://msdn.microsoft.com/en-us/library/ms714540(v=vs.85).aspx • Access поддерживает DELETE FROM, поэтому можно просто создавать таблицы в графическом конструкторе Access • При необходимости программного создания, используйте типы данных, указанные в таблице 18