代码之家  ›  专栏  ›  技术社区  ›  Dschoni

VERTICA在一个带有命名列的语句中插入多行

  •  2
  • Dschoni  · 技术社区  · 7 年前

    我想在VERTICA中有效地插入多行。在PostgreSQL(可能还有其他SQL实现)中,可以 INSERT 一条语句中有多行,这比单次插入要快得多(特别是在自动提交模式下)。

    在新创建的表中加载两行的最小自包含示例如下所示 (一)

    CREATE TABLE my_schema.my_table (
    row_count int,
    some_float float,
    some_string varchar(8));
    
    INSERT INTO my_schema.my_table (row_count, some_float, some_string) 
    VALUES (1,1.0,'foo'),(2,2.0,'bar');
    

    但它的美妙之处在于,价值的排列顺序可以改变为 :

    INSERT INTO my_schema.my_table (some_float, some_string, row_count) 
    VALUES (1.0,'foo',1),(2.0,'bar',2); 
    

    此外,此语法允许省略随后由默认值填充的列(例如自动递增整数等)。

    然而,VERTICA似乎不可能使用相同的微调来进行多行插入。事实上,模仿类似行为的唯一方法似乎是 UNION (三) :

    INSERT INTO my_schema.my_table SELECT 1,1.0,'foo' UNION SELECT 2,2.0,'bar';
    

    在这个答案中: Vertica SQL insert multiple rows in one statement .

    (三) 但有可能改变列顺序 (二) COPY LOCAL ?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Gordon Linoff    7 年前

    只需列出 insert :

    INSERT INTO my_schema.my_table (row_count, some_float, some_string)
        SELECT 1,1.0,'foo'
        UNION ALL
        SELECT 2,2.0,'bar';
    

    注意使用 UNION ALL UNION . 工会

    推荐文章