Перенести таблицу SQLServer напрямую в DuckDB в R
Недавно я читал DuckDB, и большинство примеров связано с наличием каких-то данных уже в сеансе R, а затем их отправкой в DuckDB.
Вот базовый пример использования набора данных радужной оболочки глаза;
library("DBI")
con = dbConnect(duckdb::duckdb(), ":memory:")
dbWriteTable(con, "iris_table", iris)
dbGetQuery(con, 'SELECT "Species", MIN("Sepal.Width") FROM iris_table GROUP BY "Species"')
Скажем, у меня есть данные в таблице сервера sql и я хочу напрямую записать эти данные в duck db.
Есть ли способ сделать это?
если бы у меня был запрос sql
' SELECT * FROM iris_table "
и хотел прочитать это прямо в DuckDB, как это будет работать? Я не видел примеров этого в Интернете
- Как это сработает?
- Будет ли это разумным или желательным подходом?
4 ответа
Я бы попробовал этот подход
- В R импортируйте данные из SQL Server в фрейм данных R.
- В R экспортируйте данные из фрейма данных R в DuckDB.
Я бы попытался экспортировать из SQL Server в файлы Parquet, а затем напрямую запросить их или импортировать в DuckDB.
В Duckdb вы можете использовать как в базе данных памяти, поэтому в настоящее время нет прямого доступа к серверу базы данных sql, но вы можете сделать это
первый
загрузите данные с сервера sql в фрейм данных pandas с помощью Pyodbc, а затем прочитайте данные из фрейма данных pandas
pip install pyodbc
pip install duckdb
pip install pandas
import pyodbc
import pasndas as pd
import duckdb
SERVER = '<server-address>'
DATABASE = '<database-name>'
USERNAME = '<username>'
PASSWORD = '<password>'
cnx = f'DRIVER={{ODBC Driver 18 for SQL Server}};SERVER={SERVER};DATABASE={DATABASE};UID={USERNAME};PWD={PASSWORD}'
conn = pyodbc.connect(cnx)
SQL_QUERY = """
SELECT
*
FROM
Sales;
"""
cursor = conn.cursor()
cursor.execute(SQL_QUERY)
records = cursor.fetchall()
После того, как вы вытащите дату из SQL SERVER, загрузите ее в фрейм данных Pandas.
df = pd.Dataframe.from_records(records)
затем прочитайте данные из кадра данных pandas
duckdb.sql('SELECT * FROM df').fetchall()
Вы можете настроить соединение ODBC с DuckDB. Затем экспортируйте необходимые данные из сервера SQL в базу данных DuckDB. Дополнительную информацию см. на https://duckdb.org/docs/archive/0.8.1/api/odbc/overview .