منذ يتم تخزين حصة الأسد من المعلومات التجارية في قواعد البيانات. في أي لغة برمجة تكتبها ، يجب عليك تنفيذ العديد من الإجراءات معهم.
سوف أتحدث في هذه المقالة عن واجهتين للعمل مع قواعد البيانات في R. توضح معظم الأمثلة العمل مع Microsoft SQL Server ، ومع ذلك ، ستعمل جميع أمثلة التعليمات البرمجية مع قواعد البيانات الأخرى ، مثل: MySQL و PostgreSQL و SQLite و ClickHouse و Google BigQuery وما إلى ذلك

محتوى
البرامج المطلوبة
لتكرار كل الأمثلة على العمل مع DBMS الموضحة في المقالة ، ستحتاج إلى البرنامج المجاني التالي المدرج أدناه:
- لغة ص .
- بيئة تطوير RStudio .
- نظام إدارة قواعد البيانات ، للاختيار من بينها:
3.1. مايكروسوفت مزود خادم
3.2. الخلية
3.3. كيو
حزمة DBI
حزمة DBI
هي الطريقة الأكثر شعبية وملائمة للتفاعل مع قواعد البيانات في R.
يوفر لك DBI
مجموعة من الوظائف التي يمكنك من خلالها إدارة قواعد البيانات. ولكن للاتصال بقواعد البيانات ، تحتاج إلى تثبيت حزم إضافية تمثل برامج تشغيل لأنظمة إدارة قواعد البيانات المختلفة (DBMS).
قائمة وظائف DBI الأساسية
dbConnect
- اتصال بقاعدة البيانات ؛dbWriteTable
- كتابة جدول إلى قاعدة البيانات ؛dbReadTable
- تحميل جدول من قاعدة بيانات ؛dbGetQuery
- تحميل نتيجة تنفيذ الاستعلام ؛dbSendQuery
- إرسال استعلام إلى قاعدة البيانات ؛dbFetch
- استخراج العناصر من مجموعة النتائج ؛dbExecute
- تنفيذ طلبات تحديث / حذف / إدراج البيانات في الجداول ؛dbGetInfo
- طلب معلومات حول نتيجة الطلب أو الاتصال ؛dbListFields
- طلب للحصول على قائمة حقول الجدول؛dbListTables
- الاستعلام عن قائمة جداول قاعدة البيانات ؛dbExistsTable
- التحقق من وجود جدول في قاعدة البيانات ؛dbRemoveTable
- حذف جدول من قاعدة البيانات ؛dbDisconnect
- قطع الاتصال من قاعدة البيانات.
اتصال قاعدة البيانات
للتفاعل مع قواعد البيانات ، يجب عليك أولاً الاتصال بهم. وفقًا لقواعد البيانات التي تخطط للعمل معها ، ستحتاج إلى حزمة إضافية ، فيما يلي قائمة بأكثرها استخدامًا.
odbc
- برنامج تشغيل للاتصال عبر واجهة ODBC ؛RSQLite
- سائق سكليتي.RMySQL
/ RMariaDB
- برنامج تشغيل MySQL و MariaDB ؛RPostgreSQL
- برنامج تشغيل لـ PosrtgreSQL ؛bigrquery
- برنامج تشغيل Google BigQuery ؛RClickhouse
/ clickhouse
- برنامج تشغيل ClickHouse ؛RMSSQL
- برنامج تشغيل Microsoft SQL Server (MS SQL) ، في وقت كتابة هذا التقرير ، موجود فقط على GitHub .
تأتي حزمة DBI
مع الحزمة R الأساسية ، ولكن يجب تثبيت الحزم التي تعد برامج تشغيل لقواعد البيانات باستخدام الأمر install.packages(" ")
.
لتثبيت الحزم من GitHub ، ستحتاج أيضًا إلى حزمة إضافية - devtools
. على سبيل المثال ، لا يتم نشر حزمة RMSSQL
حاليًا في مستودع R الرئيسي ، استخدم الكود التالي لتثبيته:
install.packages("devtools") devtools::install_github("bescoto/RMSSQL")
مثال على الاتصال بـ Microsoft SQL Server باستخدام حزمة odbc
قبل استخدام أي حزمة في جلسة R ، يجب أن تكون متصلاً أولاً باستخدام وظيفة library(" ")
.
لم يكن من دون سبب أنني اخترت Microsoft SQL Server كـ DBMS الرئيسي ، والذي سيوفر معظم الأمثلة في هذه المقالة. والحقيقة هي أن هذه قاعدة بيانات شائعة إلى حد ما ، ولكن في الوقت نفسه لا يزال ليس لديها برنامج تشغيل للاتصال من R المنشور على CRAN.
ولكن لحسن الحظ ، فإن SQL Server ، مثل أي قاعدة بيانات أخرى تقريبًا ، يحتوي على واجهة ODBC (اتصال قواعد البيانات المفتوحة باللغة الإنجليزية) للاتصال. يوجد عدد من الحزم للاتصال بـ DBMS عبر واجهة ODBC في R. أولاً ، سننظر في الاتصال من خلال حزمة odbc
.
اتصال قاعدة بيانات سهلة عبر واجهة odbc # odbc install.packages("odbc") # library(odbc) # MS SQL con <- dbConnect(drv = odbc(), Driver = "SQL Server", Server = "localhost", Database = "mybase", UID = "my_username", PWD = "my_password", Port = 1433)
في وظيفة dbConnect()
، تحتاج إلى تمرير الوظيفة ، والتي هي برنامج التشغيل للاتصال بـ DBMS ( odbc()
) ، كوسيطة أولى لـ drv . تسمى هذه الوظائف عادةً باسم DBMS ، وتأتي مع الحزم التي تعد برامج تشغيل لـ DBI
.
بعد ذلك ، تحتاج إلى سرد معلمات الاتصال. للاتصال بـ MS SQL عبر ODBC ، يجب عليك تحديد المعلمات التالية:
- برنامج التشغيل - اسم برنامج تشغيل ODBC ؛
- الخادم - عنوان IP لخادم SQL ؛
- قاعدة البيانات - اسم قاعدة البيانات للاتصال ؛
- UID - اسم مستخدم قاعدة البيانات ؛
- الأشخاص ذوي الإعاقة - كلمة المرور ؛
- المنفذ - المنفذ للاتصال بـ SQL Server ، المنفذ الافتراضي هو 1433.
يتم تضمين برنامج تشغيل ODBC للاتصال بـ Microsoft SQL Server مع Windows ، ولكن قد يكون له اسم مختلف. يمكنك عرض قائمة برامج التشغيل المثبتة في مسؤول مصدر بيانات ODBC. يمكنك بدء تشغيل مسؤول مصدر البيانات في نظام التشغيل Windows 10 بالطريقة التالية:
- الإصدار ٣٢ بت:
%systemdrive%\Windows\SysWoW64\Odbcad32.exe
- إصدار 64 بت:
%systemdrive%\Windows\System32\Odbcad32.exe

يمكنك أيضًا الحصول على قائمة بجميع برامج التشغيل المثبتة على جهاز الكمبيوتر الخاص بك باستخدام وظيفة odbcListDrivers()
.
name attribute value <chr> <chr> <chr> 1 SQL Server APILevel 2 2 SQL Server ConnectFunctions YYY 3 SQL Server CPTimeout 60 4 SQL Server DriverODBCVer 03.50 5 SQL Server FileUsage 0 6 SQL Server SQLLevel 1 7 SQL Server UsageCount 1 8 MySQL ODBC 5.3 ANSI Driver UsageCount 1 9 MySQL ODBC 5.3 Unicode Driver UsageCount 1 10 Simba ODBC Driver for Google BigQuery Description Simba ODBC Driver for Google BigQuery2.0 # ... with 50 more rows
يمكنك تنزيل برامج تشغيل ODBC لأنظمة إدارة قواعد البيانات الأخرى على الروابط التالية:
بالنسبة إلى نظم إدارة قواعد البيانات المختلفة ، قد يكون اسم المعلمات للاتصال مختلفًا ، على سبيل المثال:
- PostgreSQL / MySQL / MariaDB - مستخدم ، كلمة مرور ، مضيف ، منفذ ، dbname ؛
- GoogleBigQuery - مشروع ، مجموعة البيانات ؛
- ClickHouse - المستخدم ، كلمة المرور ، ديسيبل ، الميناء ، المضيف ؛
باستخدام مسؤول مصدر بيانات ODBC ، يمكنك تشغيل المعالج لإنشاء مصدر بيانات ODBC. للقيام بذلك ، ما عليك سوى فتح المسؤول ، وانتقل إلى علامة التبويب "DSN المخصصة" وانقر فوق الزر "إضافة ...".

عند إنشاء مصدر بيانات باستخدام مسؤول ، يمكنك إعطائه اسمًا ، DSN (اسم مصدر البيانات).

في المثال أعلاه ، أنشأنا مصدر بيانات باستخدام DSN "my_test_source". الآن يمكننا استخدام هذا المصدر للاتصال بـ Microsoft SQL Server ، وعدم تحديد معلمات اتصال أخرى في التعليمات البرمجية.
الاتصال بقاعدة البيانات عبر واجهة odbc باستخدام DSN # DSN con <- dbConnect(odbc(), DSN = "my_test_source", UID = "my_username", PWD = "my_password")
يمكنك مشاهدة أسماء جميع مصادر بيانات ODBC التي تم إنشاؤها على جهاز الكمبيوتر الخاص بك باستخدام وظيفة odbcListDataSources()
.
name description <chr> <chr> 1 BQ Simba ODBC Driver for Google BigQuery 2 BQ_main Simba ODBC Driver for Google BigQuery 3 BQ ODBC Simba ODBC Driver for Google BigQuery 4 OLX Simba ODBC Driver for Google BigQuery 5 Multicharts Simba ODBC Driver for Google BigQuery 6 PostgreSQL35W PostgreSQL Unicode(x64) 7 hillel_bq Simba ODBC Driver for Google BigQuery 8 blog_bq Simba ODBC Driver for Google BigQuery 9 MyClientMSSQL SQL Server 10 local_mssql SQL Server 11 MSSQL_localhost SQL Server 12 my_test_source SQL Server 13 Google BigQuery Simba ODBC Driver for Google BigQuery
مثال على الاتصال بـ Microsoft SQL Server باستخدام حزمة RMSSQL
لا RMSSQL
نشر RMSSQL على CRAN ، لذلك يمكنك تثبيته من GitHub باستخدام حزمة devtools
.
install.packages("devtools") devtools::install_github("bescoto/RMSSQL")
مثال على الاتصال باستخدام برنامج تشغيل DBI RMSSQL # library(RJDBC) library(RMSSQL) library(DBI) # RMSSQL con <- dbConnect(MSSQLServer(), host = 'localhost', user = 'my_username', password = 'my_password', dbname = "mybase")
في معظم الحالات ، باستخدام حزمة DBI
للعمل مع قواعد البيانات ، سوف تقوم بالاتصال بهذه الطريقة. أي قم بتثبيت إحدى حزم برامج التشغيل المطلوبة ، لتمرير وظيفة dbConnect كقيمة وسيطة drv ، وظيفة برنامج التشغيل للاتصال بـ DBMS التي تحتاج إليها.
مثال على الاتصال بـ MySQL و PostgreSQL و SQLite و BigQuery # MySQL library(RMySQL) con <- dbConnect(MySQL(), host = 'localhost', user = 'my_username', password = 'my_password', dbname = "mybase", host = "localhost") # PostrgeSQL library(RPostgreSQL) con <- dbConnect(PostgreSQL(), host = 'localhost', user = 'my_username', password = 'my_password', dbname = "mybase", host = "localhost") # PostrgeSQL library(RPostgreSQL) con <- dbConnect(PostgreSQL(), host = 'localhost', user = 'my_username', password = 'my_password', dbname = "mybase", host = "localhost") # SQLite library(RSQLite) # connection or create base con <- dbConnect(drv = SQLite(), "localhost.db") # Google BigQuery library(bigrquery) con <- dbConnect(drv = bigquery(), project = "my_proj_id", dataset = "dataset_name")
كيفية إخفاء كلمات مرور قاعدة البيانات في البرامج النصية ص
أعلاه ، قدمت بعض الأمثلة التي يمكن استخدامها للاتصال بأي قاعدة بيانات ، ولكن هناك عيبًا واحدًا في هذا النموذج ، حيث يتم تخزين جميع عمليات الوصول إلى قاعدة البيانات ، بما في ذلك كلمات المرور ، كنص في البرامج النصية نفسها.
إذا تم نشر جميع البرامج النصية الخاصة بك وتشغيلها محليًا حصريًا على جهاز الكمبيوتر الخاص بك ، وكانت محمية بكلمة مرور في نفس الوقت ، فعلى الأرجح لن تكون هناك مشكلة. ولكن إذا كنت تعمل مع شخص ما على نفس الخادم ، فإن تخزين كلمات المرور من قواعد البيانات في نص البرامج النصية ليس هو الحل الأفضل.
يحتوي كل نظام تشغيل على أداة مساعدة لإدارة بيانات الاعتماد. على سبيل المثال ، على Windows ، هذا هو مدير الاعتماد. يمكنك إضافة كلمة المرور التي تستخدمها للاتصال بقاعدة البيانات من خلال حزمة keyring
إلى هذا المستودع. الحزمة مشتركة بين الأنظمة الأساسية والمثال أعلاه سيعمل في أي نظام تشغيل ، على الأقل على أنظمة Windows و MacOS و Linux.
# install.packages("keyring") # library(keyring) library(RMSSQL) # key_set_with_value(service = "mssql", username = "my_username", password = "my_password") # RMSSQL con <- dbConnect(MSSQLServer(), host = 'localhost', user = 'my_username', password = key_get("mssql", "my_username"), dbname = "mybase")
أي باستخدام وظيفة key_set_with_value()
، يمكنك إضافة كلمة مرور إلى وحدة تخزين بيانات الاعتماد ، وباستخدام key_get()
تطلبها ، والمستخدم الذي أضافها إلى المتجر هو الوحيد الذي يمكنه طلب كلمة مرور. باستخدام keyring
يمكنك تخزين كلمات المرور ليس فقط من قواعد البيانات ، ولكن أيضًا من أي خدمات ، وكذلك الرموز المميزة للترخيص عند العمل مع API.
إنشاء الجداول والكتابة إلى قاعدة البيانات
يتم تنفيذ الكتابة إلى قاعدة البيانات بواسطة الدالة dbWriteTable()
.
الوسائط إلى الدالة dbWriteTable()
:
الوسائط المطلوبة بخط غامق ، المائل اختيارية
- conn - كائن اتصال DBMS تم إنشاؤه باستخدام وظيفة
dbConnect
؛ - الاسم - اسم الجدول في DBMS الذي ستتم كتابة البيانات به ؛
- القيمة - جدول (كائن من فئة data.frame / data.table / tibble_frame) في R ، ستتم كتابة البيانات منه إلى DBMS ؛
- row.names - لإضافة عمود row_names مع أرقام الصفوف إلى الجدول ، والافتراضيات إلى FALSE .
- الكتابة فوق - الكتابة فوق الجدول إذا كان الجدول بالاسم المحدد في وسيطة الاسم موجود بالفعل في DBMS ؛ القيمة الافتراضية هي FALSE ؛
- إلحاق - إلحاق البيانات إذا كان جدول يحمل الاسم المحدد في وسيطة الاسم موجود بالفعل في DBMS ؛ القيمة الافتراضية هي FALSE ؛
- field.types - يقبل متجهًا مسمىًا ، ويقوم بتعيين نوع البيانات في كل حقل عند الكتابة إلى قواعد بيانات إدارة قواعد البيانات (DBMS) ، والافتراضات إلى NULL ؛
- مؤقت - يسمح لك بإنشاء جداول مؤقتة في DBMS ، والتي ستكون متاحة حتى يتم قطع الاتصال مع قاعدة البيانات ؛ القيمة الافتراضية هي FALSE .
مثال على كتابة البيانات إلى DBMS من خلال DBI # library(odbc) # DSN con <- dbConnect(odbc(), DSN = "my_test_source", UID = "my_username", PWD = "my_password") # iris, R iris dbWriteTable(conn = con, name = "iris", value = iris) # dbDisconnect(con)
لعرض الجداول في قاعدة البيانات ، استخدم الدالة dbListTables()
، لحذف الجداول dbRemoveTable()
مثال على الاستعلام عن قائمة الجداول وحذف جدول من DBMS # library(odbc) # con <- dbConnect(odbc(), DSN = "my_test_source", UID = "my_username", PWD = "my_password") # dbListTables(con) # iris dbRemoveTable(con, "iris") # dbDisconnect(con)
قراءة البيانات من DBMS
باستخدام DBI
يمكنك الاستعلام عن الجداول بأكملها أو نتيجة تنفيذ استعلام SQL الخاص بك. يتم استخدام dbReadTable()
و dbGetQuery()
لتنفيذ هذه العمليات.
مثال على الاستعلام عن جدول قزحية من DBMS # library(odbc) # con <- dbConnect(odbc(), DSN = "my_test_source", UID = "my_username", PWD = "my_password") # iris iris dbiris <- dbReadTable(con, "iris") # dbDisconnect(con)
مثال عن تحميل تنفيذ SQL ينتج عن DBMS # library(odbc) # con <- dbConnect(odbc(), DSN = "my_test_source", UID = "my_username", PWD = "my_password") # setosa <- dbGetQuery(con, "SELECT * FROM iris WHERE Species = 'setosa'") # dbDisconnect(con)
معالجة البيانات في DBMS (DML)
يتم dbGetQuery()
الدالة dbGetQuery()
أعلاه بشكل خاص للاستعلام عن عينات البيانات (SELECT).
لعمليات معالجة البيانات ، مثل UPDATE ، INSERT ، DELETE ، توجد وظيفة dbExecute()
في DBI
.
نموذج التعليمة البرمجية لمعالجة البيانات في DBMS # library(odbc) # con <- dbConnect(odbc(), DSN = "my_test_source", UID = "my_username", PWD = "my_password") # (INSERT) dbExecute(con, "INSERT INTO iris (row_names, [Sepal.Length], [Sepal.Width], [Petal.Length], [Petal.Width], [Species]) VALUES (51, 5.0, 3.3, 1.7, 0.3, 'new_values')") # (UPDATE) dbExecute(con, "UPDATE iris SET [Species] = 'old_value' WHERE row_names = 51") # (DELETE) dbExecute(con, "DELETE FROM iris WHERE row_names = 51") # dbDisconnect(con)
المعاملات في نظم إدارة قواعد البيانات
المعاملة هي عملية قراءة وكتابة متسلسلة. يمكن أن تكون نهاية المعاملة إما حفظ التغييرات (الالتزام أو الالتزام) أو إلغاء التغييرات (العودة إلى الحالة السابقة ، الاستعادة). فيما يتعلق بقاعدة البيانات ، تكون المعاملة عبارة عن سلسلة من الاستعلامات التي يتم التعامل معها كاستعلام واحد.
اقتباس من مقال "المعاملات وآليات سيطرتها"
تتضمن المعاملة عدة عبارات SQL في وحدة أولية. في DBI
يبدأ بدء المعاملة باستخدام dbBegin()
ثم يتم تأكيده مع dbCommit()
أو إلغاؤه باستخدام dbRollback()
. في أي حال ، يضمن نظام إدارة قواعد البيانات (DBMS) ما يلي: إما أن يتم تطبيق كل أو لا شيء من العبارات على البيانات.
على سبيل المثال ، أثناء المعاملة ، دعونا نضيف 51 صفًا إلى جدول القزحية ، ثم قم بتغيير قيمة Sepal.Width إلى 5 خطوط وحذف 43 سطرًا من الجدول.
مثال رمز المعاملة # library(odbc) # con <- dbConnect(odbc(), DSN = "my_test_source", UID = "my_username", PWD = "my_password") # dbGetQuery(con, "SELECT * FROM iris WHERE row_names IN (5, 43, 51)") # row_names Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5 5.0 3.6 1.4 0.2 setosa # 2 43 4.4 3.2 1.3 0.2 setosa # 3 51 7.0 3.2 4.7 1.4 versicolor # dbBegin(con) # dbExecute(con, "INSERT INTO iris (row_names, [Sepal.Length], [Sepal.Width], [Petal.Length], [Petal.Width], [Species]) VALUES (51, 5.0, 3.3, 1.7, 0.3, 'new_values')") # dbExecute(con, "UPDATE iris SET [Sepal.Width] = 8 WHERE row_names = 5") # 43 dbExecute(con, "DELETE FROM iris WHERE row_names = 43") # dbCommit(con) # dbGetQuery(con, "SELECT * FROM iris WHERE row_names IN (5, 43, 51)") # row_names Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5 5 8.0 1.4 0.2 setosa # 2 51 7 3.2 4.7 1.4 versicolor # 3 51 5 3.3 1.7 0.3 new_values
مثال لإلغاء كود المعاملة # library(odbc) # con <- dbConnect(odbc(), DSN = "my_test_source", UID = "my_username", PWD = "my_password") # dbGetQuery(con, "SELECT * FROM iris WHERE row_names IN (5, 43, 51)") # row_names Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5 5.0 3.6 1.4 0.2 setosa # 2 43 4.4 3.2 1.3 0.2 setosa # 3 51 7.0 3.2 4.7 1.4 versicolor # dbBegin(con) # dbExecute(con, "INSERT INTO iris (row_names, [Sepal.Length], [Sepal.Width], [Petal.Length], [Petal.Width], [Species]) VALUES (51, 5.0, 3.3, 1.7, 0.3, 'new_values')") # dbExecute(con, "UPDATE iris SET [Sepal.Width] = 8 WHERE row_names = 5") # 43 dbExecute(con, "DELETE FROM iris WHERE row_names = 43") # dbRollback(con) # dbGetQuery(con, "SELECT * FROM iris WHERE row_names IN (5, 43, 51)") # row_names Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5 5.0 3.6 1.4 0.2 setosa # 2 43 4.4 3.2 1.3 0.2 setosa # 3 51 7.0 3.2 4.7 1.4 versicolor
حزمة RODBC
توفر حزمة RODBC
واجهة مستقلة للاتصال والعمل مع نظام إدارة قواعد البيانات من خلال واجهة ODBC.
RODBC
متوافق مع DBI
، أي لا يمكنك استخدام كائن الاتصال الذي تم إنشاؤه باستخدام RODBC
في الوظائف التي توفرها حزمة DBI
.
الملامح الرئيسية لحزمة RODBC
odbcConnect
- الاتصال بـ DBMS عبر DSN ؛odbcDriverConnect
- الاتصال بقاعدة البيانات من خلال سلسلة الاتصال ؛sqlQuery
- إرسال استعلام إلى DBMS ، والحصول على نتيجة تنفيذه. يدعم استفسارات من أي نوع: SELECT ، UPDATE ، INSERT ، DELETE.sqlFetch
- الحصول على الجدول بأكمله من DBMS.sqlTables
- الحصول على قائمة الجداول في قاعدة البيانات.sqlSave
- إنشاء جدول جديد في قاعدة البيانات ، أو إضافة بيانات جديدة إلى جدول موجود ؛sqlUpdate
- تحديث البيانات في جدول موجود بالفعل في DBMS ؛sqlDrop
- حذف جدول في DBMS ؛odbcClose
- إنهاء اتصال إلى DBMS.
مثال على العمل مع RODBC
من وجهة نظري ، فإن RODBC
أقل وظيفية من DBI
، لكن لديه كل الوظائف اللازمة للعمل مع DBMS.
مثال على التفاعل مع DBMS من خلال RODBC # library(RODBC) # con_string <- odbcDriverConnect(connection = "Driver=SQL Server;Server=localhost;Database=mybase;UID=my_username;PWD=my_password;Port=1433") # DSN con_dsn <- odbcConnect(dsn = "my_test_source", uid = "my_username", pwd = "my_password") # sqlSave(con_dsn, dat = iris, tablename = "iris") # iris sqlSave(con_dsn, dat = iris, tablename = "iris", append = TRUE) # 4 sqlFetch(con_dsn, "iris", rownames = FALSE, max = 4) # R iris[1, 5] <- "virginica" # sqlUpdate(con_dsn, dat = iris, tablename = "iris") # 4 sqlFetch(con_dsn, "iris", rownames = FALSE, max = 4) # sqlDrop(con_dsn, sqtable = "iris") # odbcCloseAll()
المعاملات
بشكل افتراضي ، RODBC
إيقاف المعاملات في RODBC
. تتم إدارة المعاملات بواسطة وظيفتين.
odbcSetAutoCommit
- التبديل بين أوضاع تشغيل DBMS العادية والمعاملات ؛odbcEndTran
- تأكيد أو إلغاء معاملة.
يتم تشغيل وضع المعاملة وإيقافها بواسطة وظيفة odbcSetAutoCommit
باستخدام وسيطة autoCommit .
مثال على العمل في وضع المعاملات في RODBC # library(RODBC) # DSN con_dsn <- odbcConnect(dsn = "my_test_source", uid = "my_username", pwd = "my_password") # sqlSave(con_dsn, dat = iris, tablename = "iris") # odbcSetAutoCommit(con_dsn, autoCommit = FALSE) # 4 sqlFetch(con_dsn, "iris", rownames = FALSE, max = 4) # rownames SepalLength SepalWidth PetalLength PetalWidth Species # 1 1 5.1 3.5 1.4 0.2 setosa # 2 2 4.9 3.0 1.4 0.2 setosa # 3 3 4.7 3.2 1.3 0.2 setosa # 4 4 4.6 3.1 1.5 0.2 setosa # R iris[1, 5] <- "virginica" # sqlUpdate(con_dsn, dat = iris, tablename = "iris") # 4 sqlFetch(con_dsn, "iris", rownames = FALSE, max = 4) # rownames SepalLength SepalWidth PetalLength PetalWidth Species # 1 1 5.1 3.5 1.4 0.2 virginica # 2 2 4.9 3.0 1.4 0.2 setosa # 3 3 4.7 3.2 1.3 0.2 setosa # 4 4 4.6 3.1 1.5 0.2 setosa # odbcEndTran(con_dsn, commit = FALSE) # 4 sqlFetch(con_dsn, "iris", rownames = FALSE, max = 4) # rownames SepalLength SepalWidth PetalLength PetalWidth Species # 1 1 5.1 3.5 1.4 0.2 setosa # 2 2 4.9 3.0 1.4 0.2 setosa # 3 3 4.7 3.2 1.3 0.2 setosa # 4 4 4.6 3.1 1.5 0.2 setosa # sqlUpdate(con_dsn, dat = iris, tablename = "iris") # odbcEndTran(con_dsn, commit = TRUE) # 4 sqlFetch(con_dsn, "iris", rownames = FALSE, max = 4) # rownames SepalLength SepalWidth PetalLength PetalWidth Species # 1 1 5.1 3.5 1.4 0.2 virginica # 2 2 4.9 3.0 1.4 0.2 setosa # 3 3 4.7 3.2 1.3 0.2 setosa # 4 4 4.6 3.1 1.5 0.2 setosa # odbcClose(con_dsn)
استنتاج
تعد طريقتان للعمل مع قواعد البيانات بلغات R و DBI
و RODBC
الموضحة في المقالة عالمية تمامًا RODBC
مع أي DBMS تقريبًا.
الفرق الوحيد في العملية بين نظم إدارة قواعد البيانات المختلفة هو عملية الاتصال. بالنسبة لمعظم قواعد البيانات الأكثر شيوعًا ، هناك حزم منفصلة تمثل برامج تشغيل. بالنسبة لبقية DBMS ، من الضروري تكوين الاتصال من خلال واجهة ODBC باستخدام RODBC
odbc
أو RODBC
. جميع المعالجات الأخرى ، بصرف النظر عن قواعد إدارة قواعد البيانات التي اخترتها ، لن تتغير. الاستثناء هو إرسال استعلامات SQL ، استنادًا إلى لهجة SQL التي يدعمها نظام إدارة قواعد البيانات الذي تعمل معه.