Экспортируйте данные Используя объемную вставку

Объемная функциональность вставки

Один способ экспортировать данные из MATLAB® и вставить его в вашу базу данных состоит в том, чтобы использовать sqlwrite функция в командной строке. Однако, если вы испытываете проблемы эффективности с этим процессом, можно вместо этого создать файл данных, содержащий каждую запись в наборе данных. Затем можно использовать этот файл данных в качестве входа в объемную функциональность вставки базы данных, чтобы обработать большой набор данных. Кроме того, с этим файлом можно вставить данные со специальными символами, такими как двойные кавычки. Объемная вставка обеспечивает увеличение производительности при помощи объемных утилит вставки, которые являются нативными к различным системам баз данных. Для получения дополнительной информации смотрите Работу с Большими наборами данных.

Следующее использование в качестве примера предварительно сконфигурировало источники данных JDBC. Для получения дополнительной информации о конфигурировании источника данных JDBC, смотрите configureJDBCDataSource функция.

Объемная вставка в Oracle

Этот пример использует файл данных, содержащий спортивные данные по локальной машине с установленным Oracle®, и экспортирует данные в файле к серверу Oracle с помощью объемной функциональности вставки.

  1. Соединитесь со сконфигурированным источником данных JDBC для базы данных Oracle.

    datasource = "ORA_JDBC";
    username = "user";
    password = "password";
    conn = database(datasource,username,password);
    
  2. Составьте таблицу под названием BULKTEST использование execute функция.

    execute(conn,['CREATE TABLE BULKTEST (salary number, ' ...
        'player varchar2(25), signed varchar2(25), ' ...
        'team varchar2(25))'])
    
  3. Создайте запись данных.

    A = {100000.00,'KGreen','06/22/2011','Challengers'};
    
  4. Расширьте A к набору данных, содержащему 10 000 записей.

    A = A(ones(10000,1),:);
    
  5. Запишите данные к файлу для объемной функциональности вставки.

    Совет

    При соединении с базой данных по удаленной машине необходимо записать этот файл в удаленную машину. Oracle испытывает затруднения при чтении файлов, которые не находятся на той же машине как база данных.

    fid = fopen('c:\temp\tmp.txt','wt');
    for i = 1:size(A,1)
        fprintf(fid,'%10.2f \t %s \t %s \t %s \n',A{i,1}, ...
        A{i,2},A{i,3},A{i,4});
    end
    fclose(fid);
    
  6. Установите местоположение папки с помощью execute функция.

    execute(conn, ...
        'CREATE OR REPLACE DIRECTORY ext AS ''C:\\Temp''')
    
  7. Удалите временную таблицу, если она существует, с помощью execute функция.

    execute(conn,'DROP TABLE testinsert')
    
  8. Составьте временную таблицу и используйте объемную функциональность вставки, чтобы вставить ее в таблицу BULKTEST.

    execute(conn,['CREATE TABLE testinsert (salary number, ' ...
        'player varchar2(25), signed varchar2(25), ' ...
        'team varchar2(25)) ORGANIZATION EXTERNAL ' ...
        '( TYPE ORACLE_LOADER DEFAULT DIRECTORY ext ACCESS ' ...
        'PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS ' ...
        'TERMINATED BY ''\t'') LOCATION (''tmp.txt'')) ' ...
        'REJECT LIMIT 10000'])
    
    execute(conn,'INSERT INTO BULKTEST SELECT * FROM testinsert')
    
  9. Подтвердите количество переменных в BULKTEST.

    results = fetch(conn,'SELECT * FROM BULKTEST');
    results.Properties.VariableNames
    ans =
    
      1×4 cell array
    
        {'SALARY'}    {'PLAYER'}    {'SIGNED'}    {'TEAM'}
    
  10. Закройте соединение с базой данных.

    close(conn)

Объемная вставка в Microsoft SQL Server 2005

Этот пример использует файл данных, содержащий спортивные данные по локальной машине с установленным Microsoft® SQL Server®, и экспортирует данные в файле к Microsoft SQL Server с помощью объемной функциональности вставки.

  1. Соединитесь со сконфигурированным источником данных JDBC для базы данных Microsoft SQL Server.

    datasource = "MSSQLServer_JDBC";
    username = "user";
    password = "password";
    conn = database(datasource,username,password);
    
  2. Составьте таблицу под названием BULKTEST использование execute функция.

    execute(conn,['CREATE TABLE BULKTEST (salary ' ...
        'decimal(10,2), player varchar(25), signed_date ' ...
        'datetime, team varchar(25))'])
    
  3. Создайте запись данных.

    A = {100000.00,'KGreen','06/22/2011','Challengers'};
    
  4. Расширьте A к набору данных, содержащему 10 000 записей.

    A = A(ones(10000,1),:);
    
  5. Запишите данные к файлу для объемной функциональности вставки.

    Совет

    При соединении с базой данных по удаленной машине необходимо записать этот файл в удаленную машину. Microsoft SQL Server испытывает затруднения при чтении файлов, которые не находятся на той же машине как база данных.

    fid = fopen('c:\temp\tmp.txt','wt'); 
    for i = 1:size(A,1)
       fprintf(fid,'%10.2f \t %s \t %s \t %s \n',A{i,1}, ...
       A{i,2},A{i,3},A{i,4});
    end
    fclose(fid);
  6. Запустите объемную функциональность вставки с помощью execute функция.

    execute(conn,['BULK INSERT BULKTEST FROM ' ...
        '''c:\temp\tmp.txt'' WITH (FIELDTERMINATOR = ''\t'', ' ...
        'ROWTERMINATOR = ''\n'')'])
    
  7. Подтвердите количество переменных в BULKTEST.

    results = fetch(conn,'SELECT * FROM BULKTEST');
    results.Properties.VariableNames
    ans =
    
      1×4 cell array
    
        {'SALARY'}    {'PLAYER'}    {'SIGNED_DATE'}    {'TEAM'}
    
  8. Закройте соединение с базой данных.

    close(conn)

Объемная вставка в MySQL

Этот пример использует файл данных, содержащий спортивные данные по локальной машине с установленным MySQL®, и экспортирует данные в файле к базе данных MySQL с помощью объемной функциональности вставки.

  1. Соединитесь со сконфигурированным источником данных JDBC для базы данных MySQL.

    datasource = "MySQL_JDBC";
    username = "user";
    password = "password";
    conn = database(datasource,username,password);
    
  2. Составьте таблицу под названием BULKTEST использование execute функция.

    execute(conn,['CREATE TABLE BULKTEST (salary decimal, ' ...
        'player varchar(25), signed_date varchar(25), ' ...
        'team varchar(25))'])
    
  3. Создайте запись данных.

    A = {100000.00,'KGreen','06/22/2011','Challengers'};
    
  4. Расширьте A к набору данных, содержащему 10 000 записей.

    A = A(ones(10000,1),:);
    
  5. Запишите данные к файлу для объемной функциональности вставки.

    Примечание

    MySQL читает файлы, сохраненные локально, даже если вы связываете с удаленной машиной. Поэтому можно записать файл или в локальную или в удаленную машину.

    fid = fopen('c:\temp\tmp.txt','wt');
    for i = 1:size(A,1)
       fprintf(fid,'%10.2f \t %s \t %s \t %s \n', ...
       A{i,1},A{i,2},A{i,3},A{i,4});
    end
    fclose(fid);
    
  6. Запустите объемную функциональность вставки. SQL-оператор использует оператор LOCAL INFILE для обработки ошибок. Для получения дополнительной информации об этом операторе, консультируйтесь с документацией базы данных MySQL.

    execute(conn,['LOAD DATA LOCAL INFILE ' ...
        ' ''C:\\temp\\tmp.txt'' INTO TABLE BULKTEST ' ...
        'FIELDS TERMINATED BY ''\t'' LINES TERMINATED ' ...
        'BY ''\n'''])
    
  7. Подтвердите количество переменных в BULKTEST.

    results = fetch(conn,'SELECT * FROM BULKTEST');
    results.Properties.VariableNames
    ans =
    
      1×4 cell array
    
        {'SALARY'}    {'PLAYER'}    {'SIGNED_DATE'}    {'TEAM'}
    
  8. Закройте соединение с базой данных.

    close(conn)

Смотрите также

| | |

Похожие темы

Внешние веб-сайты