আমি কি কোনও টেবিলে যৌক্তিকভাবে কলামগুলি পুনরায় অর্ডার করতে পারি?


96

আমি যদি মাইক্রোসফ্ট এসকিউএল সার্ভারের কোনও টেবিলটিতে একটি কলাম যুক্ত করছি, তবে কলামগুলিকে কোয়েরিতে যুক্তিযুক্তভাবে প্রদর্শিত হবে তা কি আমি নিয়ন্ত্রণ করতে পারি?

আমি ডিস্কে কলামগুলির শারীরিক বিন্যাসের সাথে গোলযোগ করতে চাই না, তবে আমি চাইলে যুক্তিযুক্তভাবে কলামগুলি একসাথে গ্রুপ করতে চাই যখন এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওর মতো সরঞ্জামগুলি টেবিলের বিষয়বস্তুকে একটি সুবিধাজনক উপায়ে তালিকাবদ্ধ করে।

আমি জানি যে আমি এসকিউএল ম্যানেজমেন্ট স্টুডিওর মাধ্যমে টেবিলগুলির জন্য তাদের "ডিজাইন" মোডে গিয়ে এবং কলামগুলির ক্রমটি টেনে আনতে পারি, তবে আমি এটি কাঁচা এসকিউএল করতে সক্ষম করতে চাই যাতে আমি আদেশটি সম্পাদন করতে পারি কমান্ড লাইন থেকে স্ক্রিপ্ট করা।


উত্তরের জন্য খুব দেরী হয়েছে তবে এই লিঙ্কটি একবার দেখুন। blog.sqlauthority.com/2013/03/11/…
স্ক্লুউজার


আরো সম্পর্কিত জিনিস: stackoverflow.com/questions/34818/... এবং dba.stackexchange.com/questions/18719/...
টিম Abell

এবং এটি সম্পর্কিত আরও একটি প্রশ্ন, এটি স্ট্যাকওভারফ্লো
টিম আবেল

মাইক্রোসফট সংযোগ: কলামের ক্রম পরিবর্তন করার জন্য ALTER টেবিলে বাক্য গঠন - প্রতিক্রিয়া স্বাভাবিক WONTFIX যেমন চকলেট চা তৈয়ারি করার পাত্র বিভিন্ন হল
টিম Abell

উত্তর:


79

নতুন টেবিল তৈরি না করে আপনি এটিকে অগ্রগতিমূলকভাবে (নিরাপদ উপায়ে) করতে পারবেন না।

আপনি যখন পুনর্লিখনটি করেন তখন এন্টারপ্রাইজ ম্যানেজার কী করে তা হল একটি নতুন টেবিল তৈরি করা, ডেটা স্থানান্তর করা এবং তারপরে পুরানো টেবিলটি মুছে ফেলা এবং নতুন টেবিলটির বিদ্যমান নামটির নতুন নামকরণ করা।

যদি আপনি আপনার কলামগুলিকে কোনও শারীরিক ক্রম পরিবর্তন না করে নির্দিষ্ট ক্রমে / গোষ্ঠীবদ্ধ করতে চান তবে আপনি এমন একটি দৃষ্টিভঙ্গি তৈরি করতে পারেন যা আপনি যা চান তা হতে পারে।


44

আমি মনে করি এখানকার প্রত্যেকে যা অনুপস্থিত রয়েছে তা হ'ল যদিও সবাইকে দেশ, বিশ্বজুড়ে 10, 20, বা 1000 এর একই সফ্টওয়্যার সিস্টেম ইনস্টল করার ঘটনাটি মোকাবেলা করতে হবে না ... আমাদের মধ্যে যারা বাণিজ্যিকভাবে বিক্রি হওয়া সফ্টওয়্যারটি ডিজাইন করে। ফলস্বরূপ, আমরা সময়ের সাথে সাথে সিস্টেমগুলি প্রসারণ করি, নতুন দক্ষতার প্রয়োজন হিসাবে ক্ষেত্রগুলি যুক্ত করে টেবিলগুলি প্রসারিত করি এবং সেই ক্ষেত্রগুলি চিহ্নিত হিসাবে বিদ্যমান সারণীতে অন্তর্ভুক্ত, এবং যেমন, সম্প্রসারণ, বৃদ্ধি, ক্ষেত্র যুক্ত ইত্যাদি এক দশকেরও বেশি সময় ধরে etc টেবিলগুলিতে .... এবং তারপরে ডিজাইন থেকে সেই টেবিলগুলির সাথে কাজ করা, সমর্থন করা, কখনও কখনও কাঁচা ডেটা খনন / নতুন কার্যকারিতা বাগগুলি ডিবাগ করার জন্য সমস্যা সমাধানের .... আপনার প্রাথমিক তথ্যটি না চান তা অবিশ্বাস্যরকম বাড়িয়ে তোলে is প্রথম থাবা ক্ষেতের মধ্যে দেখুন,

আমি প্রায়শই আশা করি আমি এই সঠিক কারণের জন্য এটি করতে পারি। তবে এসকিউএল ঠিক কী করবে তা না করা, একটি নতুন টেবিলের জন্য আমি যেমন চাই তার জন্য একটি স্ক্রিপ্ট তৈরি করা, এতে সন্নিবেশ লেখার পরে বিদ্যমান বিদ্যমান সীমাবদ্ধতা, সম্পর্ক, কী, সূচক ইত্যাদি ইত্যাদি বিদ্যমান টেবিল থেকে বাদ দিয়ে পুনরায় নামকরণ করা "নতুন" টেবিলটি পুরানো নামে ফিরে আসে, এবং তারপরে সেই সমস্ত কীগুলি, সম্পর্কগুলি, সূচিপত্র ইত্যাদি পড়তে পারে ....

কেবল ক্লান্তিকরই নয়, সময়সাপেক্ষও নয় ... ... আরও পাঁচ বছরে, আবারও ঘটতে হবে ....

এটি এত বিশাল পরিমাণের কাজের পক্ষে এতটা কাছাকাছি, তবে মূল কথাটি হ'ল ... আমাদের শেষ মুহূর্তে এই দক্ষতার প্রয়োজন হবে না, যেহেতু আমাদের সিস্টেমগুলি ক্রমবর্ধমান, প্রসারিত হবে এবং চালিত আদেশের মাধ্যমে ক্ষেত্রগুলি পাবে প্রয়োজন / নকশা সংযোজন।

বেশিরভাগ বিকাশকারী একটি একক সিস্টেমের দৃষ্টিকোণ থেকে ভাবেন যা একটি একক সংস্থা বা খুব নির্দিষ্ট হার্ড বক্স বাজারে কাজ করে।

"অফ-দ্য শেল্ফ" তবে উল্লেখযোগ্যভাবে প্রগতিশীল ডিজাইনার এবং তাদের বাজারের জায়গাগুলির উন্নয়নের নেতাদের সর্বদা এই সমস্যাটি মোকাবেলা করতে হবে, বার বার ..... কারও কারও সাথে সৃজনশীল সমাধান পছন্দ করবে। এটি সহজেই আমার সংস্থাকে সপ্তাহের এক ডজন ঘন্টা বাঁচাতে পারে, কেবল স্ক্রোল করতে হবে না, বা মনে রাখতে হবে "সেই" ক্ষেত্রটি উত্স ডেটা টেবিলে কোথায় আছে ....


আমাদের একই সমস্যা ছিল এবং একটি সঞ্চিত প্রক্রিয়া তৈরি হয়েছিল যা এই প্রক্রিয়াটিকে স্বয়ংক্রিয় করে তোলে (নতুন নামকরণ, নতুন টেবিল তৈরি করুন, অনুলিপি করুন, সমস্ত বিদেশী কী, সীমাবদ্ধতা ইত্যাদি) পুনরায় তৈরি করুন। আপনাকে কেবল টেবিলের নাম এবং কলামগুলির নতুন ক্রমটিতে পাস করতে হবে। এটি যদি সত্যিই আপনার সংস্থাকে সপ্তাহে কয়েক ডজন ঘন্টা বাঁচাতে পারে তবে আপনার অনুরূপ স্ক্রিপ্ট লেখার সময়টি বিনিয়োগ করা উচিত। আমাদের জন্য, একটি স্থিতিশীল স্ক্রিপ্ট পেতে প্রায় ২-৩ দিন সময় লেগেছিল যা আমরা কলামগুলি পুনঃক্রম করতে নিয়মিতভাবে ব্যবহার করি। এটি স্কেল সার্ভারে আমরা যে সমস্ত বৈশিষ্ট্য ব্যবহার করি (যেমন আংশিক সূচকগুলি, সূচীকৃত দর্শনগুলি ইত্যাদি) এর যত্ন নেয় এবং এতে প্রায় 400 এলওসি থাকে।
আন্দ্রেস

4
আমি জানি না কেন তারা কোনওভাবে কলাম লেআউটটি বিমূর্ত করতে পারে না। এটি কলামগুলিকে শারীরিকভাবে পুনঃক্রম করতে হবে না! স্কেল সার্ভারে পিএইচডি স্তরের পরিমাণ এবং প্রকৌশল ছাড়িয়ে সত্যই অবাক করে তোলা। আপনি যখন ক্যোয়ারি প্ল্যান জেনারেশনের জটিলতা, পরিসংখ্যান, সূচীকরণ এবং কেউই এখনও উঠে দাঁড়ালেন না এবং বললেন, 'কেবল একটি সারণী তৈরি করা যাক লজিকাল অর্ডার উপস্থাপন করে। FieldID Guid, OrderBy int। সম্পন্ন. তারপরে এসএসএমএস বা এটি SELECT *ব্যবহার করে। আপনি নিখুঁত ডিবিএ এবং এটি না চাইলে এটি বন্ধ করুন। খুবই হতাশাজনক. এবং এখন আমার টেবিলগুলি যথেষ্ট বড় যে আমি এটি আর জোর করতে পারি না।
সাইমন_উইভার

আমি জানি এটি একটি পুরানো মন্তব্য, তবে আপনি যখন টেবিলের স্কিমা পরিবর্তন করেন এবং প্রকাশিত করেন তখন ডেটাবেস প্রকল্পের মধ্যে ভিজ্যুয়াল স্টুডিওগুলি স্বয়ংক্রিয়ভাবে শারীরিক কলামের পুনঃক্রমের জন্য এসকিউএল স্ক্রিপ্ট তৈরি করে।
মুফ্লিক্স

5

যদি আমি আপনার প্রশ্নটি বুঝতে পারি তবে আপনি বিদ্যমান ক্যোয়ারীতে প্রথমে, দ্বিতীয়, তৃতীয়, ইত্যাদি কোন কলামগুলি ফিরে আসবে তা প্রভাবিত করতে চান ?

যদি আপনার সমস্ত প্রশ্নের সাথে লিখিত হয় SELECT * FROM TABLE- তবে এসকিউএল হিসাবে তারা আউটপুট প্রদর্শিত হবে।

যদি আপনার প্রশ্নের সাথে লেখা হয় SELECT Field1, Field2 FROM TABLE- তবে এসকিউএল এ তারা যে ক্রমটি রেখেছিল তা কোনও ব্যাপার নয়।


3

ম্যানেজমেন্ট স্টুডিও যখন এটি করে, তখন এটি অস্থায়ী টেবিল তৈরি করে, সমস্ত কিছু অনুলিপি করে, আপনার মূল টেবিলটি নামিয়ে এবং অস্থায়ী টেবিলটির নামকরণ করে। কোনও সাধারণ সমতুল্য টি-এসকিউএল বিবৃতি নেই।

যদি আপনি এটি করতে আগ্রহী না হন, আপনি সর্বদা কলামগুলি দিয়ে পছন্দ মতো ক্রমের সাথে টেবিলের একটি দৃশ্য তৈরি করতে এবং এটি ব্যবহার করতে পারেন?

সম্পাদনা: মারধর!


1

একটি উপায় আছে, তবে এটি কেবলমাত্র অস্থায়ীভাবে ক্যোয়ারীর জন্য। উদাহরণ স্বরূপ,

বলুন আপনার কাছে 5 টি টেবিল রয়েছে। টেবিল বলা হয়T_Testing

ফার্স্টনাম, লাস্টনাম, ফোন নাম্বার, ইমেল এবং সদস্য_আইডি

আপনি এটি তাদের আইডি তালিকাভুক্ত করতে চান, তার পরে পদবি, তারপরে ফার্স্টনাম, তারপরে ফোন এবং ইমেল করুন।

আপনি নির্বাচন অনুযায়ী এটি করতে পারেন।

Select Member_ID, LastName, FirstName, PhoneNumber, Email
From T_Testing

তা ছাড়া, যদি আপনি কোনও কারণে প্রথম নামের আগে লাস্টনামটি প্রদর্শন করতে চান তবে আপনি এটি নীচের মতো করেও করতে পারেন:

Select LastName, *
From T_Testing

কেবলমাত্র আপনি যে বিষয়টি নিশ্চিত করতে চান তা হ'ল অর্ডারবাই বা যেখানে ফাংশনটি টেবিল হিসাবে চিহ্নিত করা দরকার umn কলাম আপনি যদি কোথাও বা অর্ডারবাই ব্যবহার করতে যাচ্ছেন

উদাহরণ:

Select LastName, *
From T_Testing
Order By T_Testing.LastName Desc

আমি আশা করি এটি সাহায্য করে, আমি এটি আবিষ্কার করেছি কারণ আমার নিজের এটি করা দরকার।


4
এই ক্যোয়ারিতে লাস্টনাম নির্বাচন করুন, * টি_স্টেস্টিং থেকে আপনি লাস্টনামটি দুটি বার পান।
স্ক্লুউজার

1
  1. আপনার বিদ্যমান টেবিলটিকে একটি ক্যোয়ারী উইন্ডোতে স্ক্রিপ্ট করুন।
  2. এই স্ক্রিপ্টটিকে একটি পরীক্ষামূলক ডাটাবেসের বিরুদ্ধে চালান (ব্যবহারের বিবৃতিটি সরিয়ে দিন)
  3. আপনার প্রয়োজনীয় কলাম পরিবর্তন করতে এসএসএমএস ব্যবহার করুন
  4. জেনারেট চেঞ্জ স্ক্রিপ্ট ক্লিক করুন (ডিফল্টরূপে বোতাম বারে সবচেয়ে নীচে এবং নীচে অবস্থিত আইকন)
  5. আপনার আসল টেবিলের বিপরীতে এই স্ক্রিপ্টটি ব্যবহার করুন

সমস্ত স্ক্রিপ্টটি হ'ল কাঙ্ক্ষিত কলামের অর্ডার সহ একটি দ্বিতীয় সারণী সারণী তৈরি করা, এতে আপনার সমস্ত ডেটা অনুলিপি করে, মূল টেবিলটি ড্রপ করে তারপরে দ্বিতীয় স্থানটির টেবিলটির নাম পরিবর্তন করে। এটি আপনাকে নিজের লেখা বাঁচাতে পারে যদিও আপনার একটি রচনামূলক স্ক্রিপ্ট থাকা উচিত।


0

এটি সিস্টেমের টেবিলগুলি সরাসরি সংশোধন করে এসকিউএল ব্যবহার করে করা যেতে পারে। উদাহরণস্বরূপ, এখানে দেখুন:

টেবিল পরিবর্তন করুন - এর মধ্যে নতুন কলাম যুক্ত করুন

যাইহোক, আমি সিস্টেম টেবিলের সাথে খেলার পরামর্শ দেব না, যদি না এটি একেবারে প্রয়োজনীয় হয়।


0

পুরো টেবিলটি পুনরায় না নিয়ে কলামগুলির ক্রম পরিবর্তন করা সম্ভব নয়। আপনার যদি কেবলমাত্র ডাটাবেসের কয়েকটি উদাহরণ থাকে তবে আপনি এর জন্য এসএসএমএস ব্যবহার করতে পারেন (সারণীটি নির্বাচন করুন এবং "নকশা" ক্লিক করুন)।

ম্যানুয়াল প্রক্রিয়াটির জন্য আপনার যদি খুব বেশি উদাহরণ রয়েছে তবে আপনার এই স্ক্রিপ্টটি চেষ্টা করা উচিত: https://github.com/Epaminaidos/reorder-colums

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.