עבור לתוכן
Magic DevHub
yftach_carmi

שימוש בשדות מלל ארוכים במסד הנתונים

Recommended Posts

שלום רב,

אני משתמש אצלי במסד הנתונים בשדות מלל ארוכים (אורך כל שדה  7,900)

משתמש במג'יק 9.4 SP8.

עד היום הייתי עם הביטריב והגדרתי אותם כמזכר.

עכשיו שאני מעביר את הטבלאות האלו ל MSSQL2005  אני לא יודע איך להגדיר אותם :

אם אני מגדיר כמחרוזת אז זה יוצר מצב שהמג'יק צועק שאורך הרשומה הכולל ארוך מידי.

אם אני מגדיר אותם כמזכר אז המג'יק לא מאפשר לי להגדיר אותם כ varchar אלא רק כ image (שזה ממש לא מתאים מהמון סיבות)

בקיצור - הצילו, מה כדאי לי לעשות במקרה כזה

בברכת סוף שבוע נעים

יפתח

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

תנסה להגדיר שדה ב MSSQL 2005 כvarchar(8000) או כ varchar (max) ובמגיק מחרוזת

אני לא בטוח אם מג'יק תומך ב varchar(max) אבל שווה נסיון.

עם varchar(8000) אין שום בעיה מציג 8000 תווים במג'יק.

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

שלום רב,

כאשר השדה הינו מסוג מחרוזת המג'יק מגביל לאורך רשומה כולל של 8,000, יש לי עוד שדות ולכן לא יכול לבצע פתרון זה.

כאשר הוא מסוג מזכר אז אי אפשר להגדיר varchar

בקיצור ניסיתי ולא הצלחתי

אשמח לכיוונים נוספים

בברכת שבת שלום

יפתח

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

אין לך דרך אחרת או להגדיר כ VARCHAR ומחרוזת או IMAGE ב MSSQL ו BLOB במג'יק

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

שימו לב שמעבר ל-10 כבר ביטלו את שדה המזכר...

מה הבעיה בלעבוד עם IMAGE?

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

שלום רב,

תודה על התשובה האישית שהעברת לי - הסוג text בשדה מסוג מחרוזת אכן פותר את הבעיה, אומנם זהו פורמט ישן אבל מיקרוסופט עדיין תומכים בו.

(הפורמט החדש הינו varchar(max) שהמג'יק לא מקבל שמותר לחרוג מה 8,000 עבורו).

החסרונות ב image הינם:

א. אי אפשר לגשת ישירות למסד הנתונים ולצפות בנתונים (select * מציג זבל).

ב. אכסון הנתון יהיה בצורה מפוצלת במסד הנתונים על גבי רשומה נפרדת מרשומת המקור - כלומר פגיעה בביצועים (בשונה נניח מ varchar MAX ששם הוא יעבור לרשומה נפרדת רק עם התוכן בפועל באמת ארוך)

ג. פעולות כמו עדכון וגיבוי במסד הנתונים פחות ידידותיות.

ד. אי אפשר לבצע חיפושי מלל בשאילתות של מסד הנתונים אלא רק לקבל את מלוא התמונה ולפענח במג'יק

ה. זה בעצם לא מיצג נכונה את מסד הנתונים, כפי שאני מצפה שבשדה מספרים נאכסן מספרים כך גם בשדה מלל אאכסן מלל ובשדה IMAGE אאכסן קבצים, זוהי אולי תמימות שלי לצפות שמסד הנתונים יאכסן בצורה הרצויה לי אבל זו ציפיה (לכן אני גם פחות אוהב את השיטה של מג'יק של הצגת תאריך כמחרוזת במקום שימוש אמיתי בשדה תאריך, אבל ניחא).

בטוח שיש עוד סיבות מדוע זה לקוי, אבל אני מקווה שהבהרתי את הנקודה

בקיצור, אנשי מסדי הנתונים התחלחלו מאכסון בתוך תמונה

בברכת יום נפלא

יפתח

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

טוב לגבי varchar(max) יצעתי לך לבדוק עוד בתשובה ראשונהת כפי שהבנתי זה לא נתמך,חבל מאוד:(

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

יפתח שלום

נראה לי שהפתרון לבעיה שלך הוא כדלקמן:

א. ברמת ה- SQL השדות בטבלה צריכים להיות TEXT או NTEXT (תלוי אם אתה מאחסן ערכים בלי או עם UNICODE בהתאמה).

ב. ברמת המג'יק השדות צרכים להיות מוגדרים כמחרוזת. בנוסף לכך, בהגדרות SQL בתכונות השדה, בתכונה הנקראת הגדרה (או TYPE באנגלית), עליך לציין את המילה TEXT.
בצורה זו מג'יק יודע שהשדה מוגדר כ- TEXT ב-DB, והודעת השגיאה על רשומה ארוכה מדי לא מופיעה.
האורך המירבי של המלל בשדה במקרה זה מבחינת מג'יק הוא 32000 בתים.

אתה יכול לבצע GET DEFINITION של טבלה שכזו המוגדרת עם שדות מסוג TEXT ב- SQL ולראות כיצד מג'יק מגדיר אותם.

העסק הנ"ל מתועד לא רע בעזרה של מג'יק.

תסתכל בענף הבא בקובץ העזרה של מג'יק
eDeveloper Data Types - MS-SQL
בענפים הנקראים
MS-SQL Data Types ו- Text Data Type

מקווה שזה עוזר

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

TEXT מוגדר כ ZSTRING בDB (וזה גם מופיע בתיעוד של EDEV).
אגב, זה בדיוק הפתרון שנתתי לו במייל, וכפי שהוא כתב כאן בפורום - זה עובד.

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

הי גדי
מבחינת מג'יק אתה לא יכול להגדיר שדה מחרוזת יותר ארוך מ8000 תווים ולא תוכל להכניס יותר מזה גם אם זה מוגדר כTEXT בהגדרה לDATABASE
מבחינת הבדלים בין מג'יק 9 ו 10 ,אז 9 מגדיר את השדה כ מחרוזת ב get definition ו 10 כ blob

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

היי רומן.

א. תשובתי ליפתח התבססה על גירסה 9. לא בדקתי ב- 10.
ב. כדי לוודא שאנו מדברים על אותו דבר, אני שולח צילום מסך של אופן הגדרת השדה במילון הטבלאות.
ג. המבנה הנ"ל עובר CHECKER, כך שעל-פניו נראה שהפתרון צריך לעבוד.

מגבלת ה- 8000 שאתה מציין נראית לך ברמת הגדרת הטבלה או מגבלת עריכה במסך?

בכל מקרה אשמח לקבל עדכון ממך או מיפתח אם הפתרון המוצג בתמונה עובד בפועל או לא.

אני מודה ומתוודה שמעבר לבדיקה עקרונית לא ביצעתי הקלדה/עדכון של ערך בפועל בשדה שכזה עם טקסט הארוך מ- 8000 תוים.

תודה ולהתראות

long_text.jpg.34ac25293d747bac25b23eaf1f

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

היי גדי

הכן אנחנו מדברים על אותה הגדרה ברמת טבלה. נכון שזה עובר CHECKER ,אבל בנסיון לחולל טבלה מתקבלת הודעת שגיאה ,עד שלא מקצרים מחרוזת עד 8000 תווים לא ניתן להכנס לטבלה.

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

היי רומן.

*-)

באיזה גירסה אתה מנסה? 9/10?

ב- 9.4 7G אני מנסה עכשיו, ולא רואה בעיה. :S

הצבתי שדה באורך 32000 בתים על המסך עם עריכה בריבוי שורות, ועדיין לא נתקלתי בבעיה.

אני גם לא בטוח שהשימוש שיפתח זקוק לו הוא הצגה/עריכה על המסך.

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

אני מדבר על גירסה 9 אותו sp7g ,מוזר מאוד ,ניסיתי סך הכל לבצע ctrl+G על טבלה ולא הצלחתי,אולי איזה שהן הגדרות חסרות:(

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

מצ"ב יצוא של ישום מלא עם טבלה+תכנית המדגים שאפשר לבצע.

זהירות!!! מדובר ביצוא של יישום מלא. (טבלה+תכנית)
נא לייבא לתוך יישום ריק בלבד ולא ליישום קיים למניעת שיבושים!

א. יש להגדיר בסיס נתונים בשם TEST במג'יק, הפונה ל-DB ב-SQL.
ב. יש להגדיר בו "שנה טבלאות בפיתוח" = כן, כך שמג'יק ייצר את הטבלה הנדרשת בבסיס הנתונים.





שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

היי גדי

,הכן זה עובד,רק יש בעיה קטנה בנסיון לבצע INSERT לשדה בגודל 32000 תווים תקע לי את  המחשב וכרטיס מסך השתגע,הייתי צריך לבצע RESTART למחשב בשביל לרענן הגדרות של כרטיס מסך. נסיון נוסף במחשב אחר לא הצליח גם כן.לא נראה לי שזה רעיון טוב , אם זה קרה לי זה יכול לקרות גם למשתמשים.Sad

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

היי רומן

אני חושב שניתן לסכם את האשכול המתיש הזה בכך שזה אפשרי אבל לא מומלץ ולא אופטימלי.

H

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

התחבר או הרשם על מנת להגיב.

עליך להיות משתמש רשום על מנת להגיב

צור חשבון

צור חשבון חדש בקהילה בקלי קלות.

רישום חשבון חדש

התחבר

משתמש קיים? התחבר.

התחבר עכשיו

×