(Будет удалено) Добавить данные MATLAB в таблицы базы данных
fastinsert функция будет удалена в следующем релизе. Используйте sqlwrite вместо этого функция. Для получения дополнительной информации см. Вопросы совместимости.
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 равным 500565
supplierNumber равным 1010
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 значение столбца - Boolean. В некоторых базах данных логическое значение 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 объектПодключение к базе данных, заданное как ODBC connection объект или JDBC connection объект, созданный с использованием database функция.
tablename - Имя таблицы базы данныхИмя таблицы базы данных, заданное как вектор символов или строковый скаляр, обозначающий имя таблицы в базе данных.
Пример: 'employees'
Типы данных: char | string
colnames - Имена столбцов таблицы базы данныхИмена столбцов таблицы базы данных, заданные как массив ячеек из одного или нескольких векторов символов или строковые массивы для обозначения столбцов в существующей таблице базы данных tablename.
Пример: {'col1','col2','col3'}
Типы данных: cell | string
data - Данные для вставкиДанные для вставки, заданные как числовая матрица, массив ячеек, таблица, массив набора данных или структура, которая содержит все данные для вставки в существующую таблицу базы данных 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 в базу данных можно использовать datainsert и insert функций. Для максимальной эффективности используйте datainsert.
fastinsert функция будет удаленаНе рекомендуемый запуск в 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.