diff --git a/ibis/backends/clickhouse/__init__.py b/ibis/backends/clickhouse/__init__.py index 6698a0a755803..26afdf046c9ab 100644 --- a/ibis/backends/clickhouse/__init__.py +++ b/ibis/backends/clickhouse/__init__.py @@ -427,6 +427,7 @@ def insert( obj: pd.DataFrame | ir.Table, settings: Mapping[str, Any] | None = None, overwrite: bool = False, + database: str | None = None, **kwargs: Any, ): import pandas as pd @@ -436,18 +437,24 @@ def insert( self.truncate_table(name) if isinstance(obj, pa.Table): - return self.con.insert_arrow(name, obj, settings=settings, **kwargs) + return self.con.insert_arrow( + name, obj, database=database, settings=settings, **kwargs + ) elif isinstance(obj, pd.DataFrame): return self.con.insert_arrow( - name, pa.Table.from_pandas(obj), settings=settings, **kwargs + name, + pa.Table.from_pandas(obj), + database=database, + settings=settings, + **kwargs, ) elif not isinstance(obj, ir.Table): obj = ibis.memtable(obj) - query = self._build_insert_from_table(target=name, source=obj) + query = self._build_insert_from_table(target=name, source=obj, db=database) external_tables = self._collect_in_memory_tables(obj, {}) external_data = self._normalize_external_tables(external_tables) - return self.con.command(query.sql(self.name), external_data=external_data) + return self.con.command(query.sql(self.dialect), external_data=external_data) def raw_sql( self,