سؤال

أقوم بإحضار بيانات من خادم MySQL إلى R باستخدام RODBC.
لذلك في عمود واحد من قاعدة البيانات هو متجه الأحرف

SELECT MAX(CHAR_LENGTH(column)) FROM reqtable;

يعود 26566

الآن سأريكم مثالًا على كيفية مواجهة المشكلة

`library(RODBC)
 con <- odbcConnect("mysqlcon")
 rslts <- as.numeric(sqlQuery(con,
                          "SELECT CHAR_LENGTH(column) FROM reqtable LIMIT 10",
                          as.is=TRUE)[,1])

عائدات

> rslts
 [1]  62  31  17 103  30 741  28  73  25 357

بينماrslts <- nchar(as.character(sqlQuery(con, "SELECT column FROM reqtable LIMIT 10", as.is=TRUE)[,1])) عائدات

> rslts
 [1]  62  31  17 103  30 255  28  73  25 255

لذا يتم اقتطاع السلاسل ذات الطول> 255 في 255. هل هناك طريقة يمكنني الحصول على السلسلة الكاملة.

شكرًا

هل كانت مفيدة؟

المحلول

يحتوي برنامج تشغيل PostgreSQL ODBC على متغير يسمى MaxLongVarcharsize الذي وجدته تم تعيينه على 8190 افتراضيًا (لقد استخدمته على كل من Windows و Ubuntu). من الممكن أن يكون لبرنامج تشغيل MySQL ODBC متغيرًا مشابهًا إلى 255.

نصائح أخرى

يمكنك محاولة استخدام برنامج تشغيل DB آخر مثل JDBC. في تجربتي ، قام هذا في بعض الأحيان بحل المشكلة.

أيضًا ، جرب حزمة RMYSQL (يجب تجميع الثنائيات الحالية. إذا قمت بتجميعها بنفسك ، اطلب منك أن تشارك مع المجتمع)

ربما يمكن أن يوفر مصدر حزمة RODBC "رؤى حول قيود الطول الافتراضي إن وجدت. (لم أنظر إليها بعد ، لكنني سأقوم قريبًا بنشر تحديث هنا)

هناك احتمال آخر لسبب قيود عدد الأحرف المسترجع على قيود فحص "العقلانية" إلى 65535 بايت في حزمة RODBC نفسها - كما ذكر هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top