התחברות

התחברות
x
או
x
הרשמה
x

או

קליק אחד ואתם מחוברים. מהיר .קל .מאובטח.

חדש בפורומים

מעניין? שתפו דף זה באמצעות הטלפון הנייד

אירועים קרובים

מאמרים

מגמות של ביג דאטה בעולם הביטוח
CA Technologies
SSIS - Buffer Size Optimization
קטגוריה ראשית
בדיקות BI ו-DWH לעומת הבדיקות בתחומים אחרים
קטגוריה ראשית
איסוף דרישות לפרויקטי BI
קטגוריה ראשית
כח המידע במיקוד
קטגוריה ראשית
0

הדף שלנו בפייסבוק

Star inactiveStar inactiveStar inactiveStar inactiveStar inactive
 

כפי שכולכם יודעים התחביר הבסיסי בSQL של select * יציג את הנתונים של כל השדות בטבלה, אך לצערנו לא ניתן תמיד להשתמש בשיטה זאת.

הסיבה היא ששימוש בselect *  בכלים אוטומטים או בכתיבת קוד יכול לגרום לקריסת מערכת כאשר השדות משתנות בטבלה, לכן עדיף לפרט את השדות מאשר לכתוב select *.

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

 

הסקריפט בצורתו הבסיסית:

select 'Select ' || listagg(COLUMN_NAME,',') within group (order by table_name) 
|| ' from ' || owner || '.'||table_name as syntx 
from SYS.ALL_TAB_COLS WHERE owner='OWNER'and table_name='TABLE_NAME'
group by table_name,owner


יש להחליף את את OWNER בשם הסכמה ואת TABLE_NAME בשם הטבלה (בשורה השניה מלמטה). יש להקפיד על אותיות גדולות.

לדוגמא, אם ניקח את טבלת CUSTOMERS בסכמה CHINOOK ונכתוב:

 

Select * from CHINOOK.CUSTOMER

 

נקבל את התוצאה הבאה:

02100 01

נכניס את הפרמטרים לסקריפט מקודם:

 
select 'Select ' || listagg(COLUMN_NAME,',') within group (order by table_name) || ' from '  || owner || '.'||table_name as syntx
from SYS.ALL_TAB_COLS WHERE owner='CHINOOK' and table_name='CUSTOMER' group by table_name,owner
ונקבל את התוצאה הבאה:
Select ADDRESS,CITY,COMPANY,COUNTRY,CUSTOMERID,EMAIL,FAX,FIRSTNAME,LASTNAME,PHONE,POSTALCODE,STATE,SUPPORTREPID from CHINOOK.CUSTOMER

 כלומר, אותו דבר כמו select * רק עם פירוט השדות.

 

 

Microsoft

Oracle

IBM

Informatica

Sap

SAS

Qlikview

Cloudera

Machine Learning