def test_select_basics(self): name = 'testing123456' expr = self.t.limit(10) select, _ = _get_select(expr) stmt = ddl.InsertSelect(name, select, database='foo') result = stmt.compile() expected = """\ INSERT INTO foo.`testing123456` SELECT * FROM functional_alltypes LIMIT 10""" assert result == expected stmt = ddl.InsertSelect(name, select, database='foo', overwrite=True) result = stmt.compile() expected = """\ INSERT OVERWRITE foo.`testing123456` SELECT * FROM functional_alltypes LIMIT 10""" assert result == expected
def insert(self, table_name, expr, database=None, overwrite=False, validate=True): """ Insert into existing table Parameters ---------- table_name : string expr : TableExpr database : string, default None overwrite : boolean, default False If True, will replace existing contents of table validate : boolean, default True If True, do more rigorous validation that schema of table being inserted is compatible with the existing table Examples -------- con.insert('my_table', table_expr) # Completely overwrite contents con.insert('my_table', table_expr, overwrite=True) """ if validate: existing_schema = self.get_schema(table_name, database=database) insert_schema = expr.schema() if not insert_schema.equals(existing_schema): _validate_compatible(insert_schema, existing_schema) ast = sql.build_ast(expr) select = ast.queries[0] statement = ddl.InsertSelect(table_name, select, database=database, overwrite=overwrite) self._execute(statement)