(Подлежит удалению) Добавление данных 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-по-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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.