【问题标题】:Best way to import a large dataset into Oracle sql database?将大型数据集导入 Oracle sql 数据库的最佳方法?
【发布时间】:2018-05-21 00:37:34
【问题描述】:

我是 oracle 数据库的新手,我正在制作一个非常简单的双语词典(2 个表 - 英语和法语)。

字典通常包含数千个单词。我的问题是,与其编写数千个 [INSERT INTO ... VALUES] 命令,还有没有更好的方法来以某种方式自动化该过程,例如制作导入表单?因为我学校提供的书只提到了 INSERT 命令。

【问题讨论】:

    标签: sql oracle performance


    【解决方案1】:

    您可以结合使用电子表格和 INSERT ALL 命令来快速生成 SQL INSERT 命令来插入数据。

    如果您有电子表格格式的数据,则可以使用公式为每一行构造一个 INSERT 语句。

    但是,您可以使用 INSERT ALL 语法而不是 INSERT(单行)语法。

    为此:

    1. 在电子表格中添加一列,其公式如下:"INTO table (col1, col2, col3) VALUES ('val1', 'val2', 'val3')"。您需要使用串联将值添加到此公式中。

    所以您的公式可能如下所示(假设 A、B 和 C 列):

    ="INTO 表 (col1, col2, col3) VALUES ('"&A2&"', '"&B2&"', '"&C2&"')"

    1. 将公式复制到每一行。
    2. 将所有这些公式复制并粘贴到 IDE 内的查询窗口中。
    3. 在命令开头添加单词INSERT ALL
    4. 在命令末尾添加单词SELECT * FROM dual;

    您的命令将如下所示:

    INSERT ALL
    INTO table (col1, col2, col3) VALUES ('val1', 'val2', 'val3')
    INTO table (col1, col2, col3) VALUES ('val1a', 'val2a', 'val3a')
    INTO table (col1, col2, col3) VALUES ('val1b', 'val2b', 'val3b')
    SELECT * FROM dual;
    

    这将在单个语句中插入所有记录,并且可能比数百或数千个 INSERT 语句快得多。

    或者,您可以使用数据泵导入和导出之类的工具,但我在这方面的经验有限,所以也许其他用户可以详细说明。

    【讨论】:

    • 感谢您的回答。我试试看!
    【解决方案2】:

    如果您将数据保存在文件中,则可以使用 UTL_FILE 包来读取、解析和加载数据。 Oracle ULT_FILE package

    您也可以使用 Oracle 的外部表功能。看这里 Oracle External tables

    【讨论】:

      【解决方案3】:

      Oracle 的 Sql Loader 产品非常适合快速加载大量数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-27
        • 1970-01-01
        • 2018-03-03
        • 2010-11-22
        • 2020-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多