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