(Чтобы быть удаленным), Добавляют данные MATLAB к таблицам базы данных
Функция fastinsert будет удалена в будущем релизе. Используйте функцию sqlwrite вместо этого. Для получения дополнительной информации см. Вопросы совместимости.
fastinsert(conn,tablename,colnames,data)fastinsert( экспортирует данные из рабочей области MATLAB® и вставляет его в существующую таблицу базы данных с помощью соединения с базой данных conn,tablename,colnames,data)conn. Можно задать имя таблицы базы данных и имена столбцов, и задать данные для вставки в базу данных.
Вы не задаете тип данных, которые вы экспортируете. Данные экспортированы в его текущем формате MATLAB.
Во-первых, соединитесь с базой данных Microsoft® SQL Server®. Затем экспортируйте данные из MATLAB® в базу данных и закройте соединение с базой данных.
Создайте соединение с базой данных к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.
datasource = 'MS SQL Server Auth'; conn = database(datasource,'','');
Проверяйте соединение с базой данных. Если свойство Message пусто, связь успешна.
conn.Message
ans =
[]
Выберите и отобразите все строки в таблице, отсортированной по номеру продуктов с помощью функции select.
selectquery = 'SELECT * FROM productTable ORDER BY productNumber';
data = select(conn,selectquery)
data =
productNumber stockNumber supplierNumber unitCost productDescription
_____________ ___________ ______________ ________ __________________
1 4.0035e+05 1001 14 'Building Blocks'
2 4.0031e+05 1002 9 'Painting Set'
3 4.01e+05 1009 17 'Slinky'
Сохраните имена столбцов productTable в массиве ячеек.
tablename = 'productTable'; colnames = {'productNumber','stockNumber','supplierNumber', ... 'unitCost','productDescription'};
Храните данные для вставки в массиве ячеек, который содержит эти значения:
productNumber, равный 4
stockNumber, равный 500 565
supplierNumber, равный 1 010
unitCost, равный 20$
productDescription, равный 'Cooking Set'
Затем преобразуйте массив ячеек в таблицу.
insertdata = {4,500565,1010,20,'Cooking Set'};
insertdata = cell2table(insertdata,'VariableNames',colnames)
insertdata =
productNumber stockNumber supplierNumber unitCost productDescription
_____________ ___________ ______________ ________ __________________
4 5.0057e+05 1010 20 'Cooking Set'
Вставьте данные в таблицу.
fastinsert(conn,tablename,colnames,insertdata)
Выберите и отобразите все строки в таблице снова.
data = select(conn,selectquery)
data =
productNumber stockNumber supplierNumber unitCost productDescription
_____________ ___________ ______________ ________ __________________
1 4.0035e+05 1001 14 'Building Blocks'
2 4.0031e+05 1002 9 'Painting Set'
3 4.01e+05 1009 17 'Slinky'
4 5.0057e+05 1010 20 'Cooking Set'
Новая строка появляется в productTable с данными из insertdata.
Закройте соединение с базой данных.
close(conn)
Во-первых, соединитесь с базой данных Microsoft® SQL Server®. Затем экспортируйте несколько строк данных из MATLAB® в базу данных и закройте соединение с базой данных.
Создайте соединение с базой данных ODBC к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.
datasource = 'MS SQL Server Auth'; conn = database(datasource,'','');
Проверяйте соединение с базой данных. Если свойство Message пусто, связь успешна.
conn.Message
ans =
[]
Выберите и отобразите данные в таблице inventoryTable. Импортируйте данные с помощью функции select.
selectquery = 'SELECT * FROM inventoryTable';
data = select(conn,selectquery)
data =
productNumber Quantity Price inventoryDate
_____________ ________ _____ _____________
1 1700 15 '2014-09-23'
2 1200 9 '2014-07-08'
3 356 17 '2014-05-14'
4 2580 21 '2013-06-08'
5 9000 3 '2012-09-14'
6 4540 8 '2013-12-25'
7 6034 16 '2014-08-06'
8 8350 5 '2011-06-18'
9 2339 13 '2011-02-09'
10 723 24 '2012-03-14'
Присвойте несколько строк данных к массиву ячеек insertdata. Каждая строка содержит данные для столбцов в inventoryTable. Первая строка данных содержит:
Номер продуктов равняется 11
Количество равняется 125
Цена составляет 23,00$
Дата материально-технических ресурсов является текущей датой
insertdata = {11,125,23.00,datestr(now,'yyyy-mm-dd'); ...
12,1160,14.7,datestr(now,'yyyy-mm-dd'); ...
13,150,54.5,datestr(now,'yyyy-mm-dd')};
Сохраните имена столбцов inventoryTable в массиве ячеек.
tablename = 'inventoryTable'; colnames = {'productNumber','Quantity','Price','inventoryDate'};
Вставьте данные в таблицу.
fastinsert(conn,tablename,colnames,insertdata)
Выберите и отобразите данные в таблице inventoryTable снова.
data = select(conn,selectquery)
data =
productNumber Quantity Price inventoryDate
_____________ ________ _____ _____________
1 1700 15 '2014-09-23'
2 1200 9 '2014-07-08'
3 356 17 '2014-05-14'
4 2580 21 '2013-06-08'
5 9000 3 '2012-09-14'
6 4540 8 '2013-12-25'
7 6034 16 '2014-08-06'
8 8350 5 '2011-06-18'
9 2339 13 '2011-02-09'
10 723 24 '2012-03-14'
11 125 23 '2016-11-02'
12 1160 15 '2016-11-02'
13 150 55 '2016-11-02'
Три новых строки появляются в inventoryTable с данными из insertdata.
Закройте соединение с базой данных.
close(conn)
Во-первых, соединитесь с базой данных Microsoft® SQL Server®. Затем экспортируйте числовые данные из MATLAB® в базу данных и закройте соединение с базой данных.
Создайте соединение с базой данных ODBC к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.
datasource = 'MS SQL Server Auth'; conn = database(datasource,'','');
Проверяйте соединение с базой данных. Если свойство Message пусто, связь успешна.
conn.Message
ans =
[]
Задайте числовой матричный numdata, который содержит данные об объеме продаж.
numdata = [777666,0,350,400,450,250,450,500,515,235,100,300,600];
Выберите и отобразите данные в таблице salesVolume перед вставкой. Импортируйте данные с помощью функции select.
selectquery = 'SELECT * FROM salesVolume';
data = select(conn,selectquery)
data =
StockNumber January February March April May June July August September October November December
___________ _______ ________ _____ _____ ____ ____ ____ ______ _________ _______ ________ ________
1.2597e+05 1400 1100 981 882 794 752 654 773 809 980 3045 19000
2.1257e+05 2400 1721 1414 1191 983 825 731 653 723 790 1400 5000
3.8912e+05 1800 1200 890 670 550 450 400 410 402 450 1200 16000
4.0031e+05 3000 2400 1800 1500 1200 900 700 650 1670 2500 6000 15000
4.0034e+05 4300 0 2600 1800 1600 1550 895 700 750 900 8000 24000
4.0035e+05 5000 3500 2800 2300 1700 1400 1000 900 1600 3300 12000 20000
4.0046e+05 1200 900 800 500 399 345 300 175 760 1500 5500 17000
4.0088e+05 3000 2400 1500 1500 1300 1100 900 867 923 1100 4000 32000
4.01e+05 3000 1500 1000 900 750 700 400 350 500 1100 3000 12000
8.8865e+05 0 900 821 701 689 621 545 421 495 550 4200 12000
4.0814e+05 6000 3100 8800 2300 1700 1400 1000 900 1600 3300 12000 25000
2.1046e+05 1800 9700 800 500 3997 349 300 175 760 1500 5500 27000
4.7082e+05 3100 9400 1540 1500 1350 1190 900 867 923 1400 3000 35000
5.101e+05 235 1800 1040 900 750 700 400 350 500 100 3000 18000
8.9975e+05 123 1700 823 701 689 621 545 421 495 650 4200 11000
Сохраните имена столбцов salesVolume в массиве ячеек.
tablename = 'salesVolume'; colnames = {'stockNumber','January','February','March','April','May', ... 'June','July','August','September','October','November', ... 'December'};
Вставьте данные в таблицу.
fastinsert(conn,tablename,colnames,numdata)
Выберите и отобразите данные в таблице salesVolume снова.
data = select(conn,selectquery)
data =
StockNumber January February March April May June July August September October November December
___________ _______ ________ _____ _____ ____ ____ ____ ______ _________ _______ ________ ________
1.2597e+05 1400 1100 981 882 794 752 654 773 809 980 3045 19000
2.1257e+05 2400 1721 1414 1191 983 825 731 653 723 790 1400 5000
3.8912e+05 1800 1200 890 670 550 450 400 410 402 450 1200 16000
4.0031e+05 3000 2400 1800 1500 1200 900 700 650 1670 2500 6000 15000
4.0034e+05 4300 0 2600 1800 1600 1550 895 700 750 900 8000 24000
4.0035e+05 5000 3500 2800 2300 1700 1400 1000 900 1600 3300 12000 20000
4.0046e+05 1200 900 800 500 399 345 300 175 760 1500 5500 17000
4.0088e+05 3000 2400 1500 1500 1300 1100 900 867 923 1100 4000 32000
4.01e+05 3000 1500 1000 900 750 700 400 350 500 1100 3000 12000
8.8865e+05 0 900 821 701 689 621 545 421 495 550 4200 12000
4.0814e+05 6000 3100 8800 2300 1700 1400 1000 900 1600 3300 12000 25000
2.1046e+05 1800 9700 800 500 3997 349 300 175 760 1500 5500 27000
4.7082e+05 3100 9400 1540 1500 1350 1190 900 867 923 1400 3000 35000
5.101e+05 235 1800 1040 900 750 700 400 350 500 100 3000 18000
8.9975e+05 123 1700 823 701 689 621 545 421 495 650 4200 11000
7.7767e+05 0 350 400 450 250 450 500 515 235 100 300 600
Новая строка появляется в salesVolume с данными из numdata.
Закройте соединение с базой данных.
close(conn)
Во-первых, соединитесь с базой данных Microsoft® SQL Server®. Затем экспортируйте данные из MATLAB® в базу данных и фиксируйте транзакцию вставки. Закройте соединение с базой данных.
Создайте соединение с базой данных ODBC к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль. Используйте аргумент пары "имя-значение" AutoCommit, чтобы задать вручную передающие транзакции к базе данных.
datasource = 'MS SQL Server Auth'; conn = database(datasource,'','','AutoCommit','off');
Проверяйте соединение с базой данных. Если свойство Message пусто, связь успешна.
conn.Message
ans =
[]
Вставьте массив ячеек data в таблицу inventoryTable с именами столбцов colnames.
data = {157,358,740.00,datestr(now,'yyyy-mm-dd HH:MM:SS')};
colnames = {'productNumber','Quantity','Price','inventoryDate'};
tablename = 'inventoryTable';
fastinsert(conn,tablename,colnames,data)
Фиксируйте транзакцию вставки.
commit(conn)
Закройте соединение с базой данных.
close(conn)
Во-первых, соединитесь с базой данных Microsoft® SQL Server®. Затем экспортируйте булевы данные из MATLAB® в базу данных. Закройте соединение с базой данных.
Создайте соединение с базой данных ODBC к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.
datasource = 'MS SQL Server Auth'; conn = database(datasource,'','');
Эта база данных содержит таблицу Invoice с этими столбцами:
InvoiceNumber
InvoiceDate
productNumber
Paid
Receipt
Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.
conn.Message
ans =
[]
Отобразите данные в таблице Invoice перед вставкой.
selectquery = 'SELECT * FROM Invoice';
data = select(conn,selectquery)
data =
10×5 table
InvoiceNumber InvoiceDate ProductNumber Paid Receipt
_____________ _________________________ _____________ _____ ______________
2101 '2010-08-01 00:00:00.000' 1 false [8000×1 uint8]
3546 '2010-03-01 00:00:00.000' 2 true [8000×1 uint8]
33116 '2011-05-15 00:00:00.000' 3 true [8000×1 uint8]
34155 '2011-07-12 00:00:00.000' 4 false [8000×1 uint8]
34267 '2011-07-22 00:00:00.000' 5 true [8000×1 uint8]
37197 '2011-09-03 00:00:00.000' 6 true [8000×1 uint8]
37281 '2011-09-21 00:00:00.000' 7 false [8000×1 uint8]
41011 '2011-12-12 00:00:00.000' 8 true [8000×1 uint8]
61178 '2012-01-15 00:00:00.000' 9 false [8000×1 uint8]
62145 '2012-01-23 00:00:00.000' 10 true [8000×1 uint8]
Создайте переменную insertdata как структуру, содержащую номер счета-фактуры 2105, номер продуктов 11 и булевы данные false, чтобы иметь значение неоплаченный. Булевы данные представлены как тип данных MATLAB® logical. Этот код принимает, что изображение получения отсутствует.
insertdata.InvoiceNumber{1} = 2105;
insertdata.InvoiceDate{1} = datestr(now,'yyyy-mm-dd HH:MM:SS');
insertdata.productNumber{1} = 11;
insertdata.Paid{1} = false;
Вставьте заплаченные данные о счете в таблицу Invoice с именами столбцов colnames с помощью соединения с базой данных.
colnames = {'InvoiceNumber';'InvoiceDate';'productNumber';'Paid'};
tablename = 'Invoice';
fastinsert(conn,tablename,colnames,insertdata)
Просмотрите новую запись в базе данных, чтобы проверить, что значение столбца Paid является булевской переменной. В некоторых базах данных логическое значение MATLAB® false показывает булевым false, No или снятым флажком.
data = select(conn,selectquery)
data =
11×5 table
InvoiceNumber InvoiceDate ProductNumber Paid Receipt
_____________ _________________________ _____________ _____ ______________
2101 '2010-08-01 00:00:00.000' 1 false [8000×1 uint8]
3546 '2010-03-01 00:00:00.000' 2 true [8000×1 uint8]
33116 '2011-05-15 00:00:00.000' 3 true [8000×1 uint8]
34155 '2011-07-12 00:00:00.000' 4 false [8000×1 uint8]
34267 '2011-07-22 00:00:00.000' 5 true [8000×1 uint8]
37197 '2011-09-03 00:00:00.000' 6 true [8000×1 uint8]
37281 '2011-09-21 00:00:00.000' 7 false [8000×1 uint8]
41011 '2011-12-12 00:00:00.000' 8 true [8000×1 uint8]
61178 '2012-01-15 00:00:00.000' 9 false [8000×1 uint8]
62145 '2012-01-23 00:00:00.000' 10 true [8000×1 uint8]
2105 '2017-01-04 10:19:42.000' 11 false ''
Последняя строка содержит булевы данные false.
Закройте соединение с базой данных.
close(conn)
conn — Соединение с базой данныхconnectionСоединение с базой данных, заданное как объект connection, создается с функцией database.
tablename — Имя таблицы базы данныхИмя таблицы базы данных, заданное как вектор символов или скаляр строки обозначение имени таблицы в базе данных.
Пример: 'employees'
Типы данных: char | string
colnames — Имена столбцов таблицы базы данныхИмена столбцов таблицы базы данных, заданные как массив ячеек одного или нескольких векторов символов или массива строк, чтобы обозначить столбцы в существующей таблице базы данных tablename.
Пример: {'col1','col2','col3'}
Типы данных: cell | string
данные Данные, чтобы вставитьДанные, чтобы вставить, заданный как числовая матрица, массив ячеек, таблица, массив набора данных или структура, которая содержит все данные для вставки в существующую таблицу базы данных tablename. Если data является структурой, то имена полей в структуре должны совпадать с colnames. Если data является таблицей или массивом набора данных, то имена переменных в таблице или массиве набора данных должны совпадать с colnames.
Чтобы вставить данные в структуру, таблица или массив набора данных, использует это специальное форматирование. Каждое поле или переменная в структуре, таблице или массиве набора данных должны быть массивом ячеек или двойным вектором. Двойной вектор должен иметь размер n-by-1, где n является количеством строк, которые будут вставлены.
Чтобы уменьшать время преобразования, преобразуйте даты в последовательные числа даты с помощью datenum прежде, чем вызвать fastinsert.
Значение свойства AutoCommit в объекте connection определяет, передает ли fastinsert автоматически данные базе данных.
Чтобы просмотреть значение AutoCommit, получите доступ к нему с помощью объекта connection; например, conn.AutoCommit.
Чтобы установить значение AutoCommit, используйте соответствующий аргумент пары "имя-значение" в функции database.
Чтобы передать данные базе данных, используйте commit, функционируют или вводят выражение SQL COMMIT с помощью функции exec.
Чтобы откатывать данные, используйте rollback или введите выражение SQL ROLLBACK с помощью функции exec.
Если сообщение об ошибке как следующее появляется, когда вы запускаете fastinsert, таблица может быть открыта в режиме редактирования.
[Vendor][ODBC Product Driver] The database engine could not lock table 'TableName' because it is already in use by another person or process.
В этом случае закройте таблицу в базе данных и повторно выполните функцию fastinsert.
Чтобы экспортировать данные MATLAB в базу данных, можно использовать функции insert и datainsert. Для максимальной производительности используйте datainsert.
Не рекомендуемый запуск в R2018a
Функция fastinsert будет удалена в будущем релизе. Используйте функцию sqlwrite вместо этого. Некоторые различия между рабочими процессами требуют обновлений вашего кода.
В предшествующих релизах вы экспортировали данные из рабочего пространства MATLAB в базу данных при помощи функции fastinsert и четырех входных параметров. Например:
tablename = 'productTable'; colnames = {'productNumber','stockNumber','supplierNumber', ... 'unitCost','productDescription'}; insertdata = {4,500565,1010,20,'Cooking Set'}; insertdata = cell2table(insertdata,'VariableNames',colnames) fastinsert(conn,tablename,colnames,insertdata)
Теперь функция sqlwrite требует только трех входных параметров.
tablename = 'productTable'; colnames = {'productNumber','stockNumber','supplierNumber', ... 'unitCost','productDescription'}; insertdata = {4,500565,1010,20,'Cooking Set'}; insertdata = cell2table(insertdata,'VariableNames',colnames) sqlwrite(conn,tablename,insertdata)
close | commit | database | insert | logical | rollback | select | sqlwrite
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.