fastinsert

(Будет удалено) Добавить данные MATLAB в таблицы базы данных

fastinsert функция будет удалена в следующем релизе. Используйте sqlwrite вместо этого функция. Для получения дополнительной информации см. Вопросы совместимости.

Описание

пример

fastinsert(conn,tablename,colnames,data) экспортирует данные из MATLAB® рабочая область и вставляет ее в существующую таблицу базы данных с помощью подключения к базе данных 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)

Входные параметры

свернуть все

Подключение к базе данных, заданное как ODBC connection объект или JDBC connection объект, созданный с использованием database функция.

Имя таблицы базы данных, заданное как вектор символов или строковый скаляр, обозначающий имя таблицы в базе данных.

Пример: 'employees'

Типы данных: char | string

Имена столбцов таблицы базы данных, заданные как массив ячеек из одного или нескольких векторов символов или строковые массивы для обозначения столбцов в существующей таблице базы данных 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 в базу данных можно использовать datainsert и insert функций. Для максимальной эффективности используйте datainsert.

Вопросы совместимости

расширить все

Не рекомендуемый запуск в R2018a

Представлено до R2006a