এসকিউএল-তে অন্য সারণিতে একটি সারণীর সমস্ত মান সন্নিবেশ করান


128

আমি অন্য টেবিলের সমস্ত মান anotherোকানোর চেষ্টা করছি। তবে সন্নিবেশ বিবৃতিটি মানগুলি স্বীকার করে, তবে আমি এটি প্রাথমিক_আপনযোগ্য থেকে একটি নির্বাচনকে গ্রহণ করতে চাই। এটা কি সম্ভব?

উত্তর:


262

সন্নিবেশ বিবৃতিতে আসলে এটি করার জন্য একটি বাক্য গঠন রয়েছে। যদিও আপনি "*" নির্বাচন না করে কলামের নাম উল্লেখ করেছেন তা অনেক সহজ:

INSERT INTO new_table (Foo, Bar, Fizz, Buzz)
SELECT Foo, Bar, Fizz, Buzz
FROM initial_table
-- optionally WHERE ...

আমি আরও ভাল করে এটি স্পষ্ট করতে পারি কারণ কোনও কারণে এই পোস্টটি কয়েকটি ডাউন-ভোট পাচ্ছে।

INSERT INTO ... সিলেক্ট থেকে সিলেক্ট করুন যখন আপনি সারণীটি সন্নিবেশ করছেন (উপরের আমার উদাহরণে "new_table") ইতিমধ্যে উপস্থিত রয়েছে। অন্যরা যেমন বলেছে, নির্বাচন করুন ... কমান্ডের অংশ হিসাবে আপনি যখন নতুন টেবিলটি তৈরি করতে চান তখন নির্বাচনের জন্য সিনট্যাক্স IN

কমান্ডের অংশ হিসাবে নতুন টেবিলটি তৈরি করা দরকার কিনা আপনি তা নির্দিষ্ট করেননি, সুতরাং INSERT INTO ... আপনার গন্তব্য সারণী ইতিমধ্যে উপস্থিত থাকলে নির্বাচন করুন থেকে ভাল নির্বাচন করা উচিত।


3
Wha--? কেউ এই পোস্টটি কেন ডাউন-ভোট জেনারেট করে তা ব্যাখ্যা করে আমাকে মন্তব্য করতে চান? আমি ওপিএসের প্রশ্নের মধ্যে এমন কিছু দেখতে পাচ্ছি না যা নির্দিষ্ট করে যে নতুন টেবিলটি ক্যোয়ারির অংশ হিসাবে তৈরি করা উচিত।
ম্যাট হ্যামিল্টন

কীভাবে এটি হ'ল অখণ্ডতা সীমাবদ্ধতা লঙ্ঘন করে? উদাহরণস্বরূপ, যদি কোনও অনন্যটি সদৃশ হয় তবে এটি কি ক্যোরি বন্ধ করে দেয় বা কেবলমাত্র সেই নির্দিষ্ট এন্ট্রিটি এড়িয়ে যায়?
মার্টিন ডেল লাইনেস

আমি বিশ্বাস করি এটি একটি ত্রুটি ফেলে দেবে এবং লেনদেনটিকে আবার ফিরিয়ে দেবে, যার অর্থ কোনও কিছুই অনুলিপি করা হয় না। মূল্যবান পরীক্ষা যদিও।
ম্যাট হ্যামিল্টন

25

এটা চেষ্টা কর:

INSERT INTO newTable SELECT * FROM initial_Table

2
আমাদের পরিচয় কলাম থাকাকালীন তারাগুলি ব্যবহার করার সময় কাজ করছেন না
মহসেন তাভোসি محسن طاوسی

পরিচয়ের সাথে এই দৃশ্যের জন্য পরিচয় মান সন্নিবেশ করানোর জন্য প্রথমে SET পরিচয়পত্রের নাম টেবিলের নাম এবং শেষে বন্ধটি যুক্ত করুন।
জুয়ান

13

আপনি নিম্নলিখিত হিসাবে সাব-কোয়েরি ব্যবহার করে সন্নিবেশ করতে পারেন:

INSERT INTO new_table (columns....)
SELECT columns....
FROM initial_table where column=value



4

একটি সহজ উপায় আছে যেখানে আপনাকে কোনও কোড টাইপ করতে হবে না (পরীক্ষার জন্য আদর্শ বা এককালীন আপডেট):

ধাপ 1

  • এক্সপ্লোরারের টেবিলে ডান ক্লিক করুন এবং "শীর্ষ 100 সারি সম্পাদনা করুন" নির্বাচন করুন;

ধাপ ২

  • তারপরে আপনি যে সারিগুলি চান তা নির্বাচন করতে পারেন ( Ctrl + ক্লিক বা Ctrl + A ), এবং ডান ক্লিক করুন এবং অনুলিপি করুন ( দ্রষ্টব্য : আপনি যদি " কোথায় " শর্ত যোগ করতে চান তবে গ্রিডে> রাইট ক্লিক করুন -> এসকিউএল এখন আপনি ক্যোয়ারী সম্পাদনা করতে পারেন এবং যেখানে শর্ত যোগ করতে পারেন, তারপরে আবার ডান ক্লিক করুন -> এসকিউএল সম্পাদন করুন, আপনার প্রয়োজনীয় সারি নীচে নির্বাচন করার জন্য উপলব্ধ থাকবে)

ধাপ 3

  • লক্ষ্য টেবিলের জন্য পদক্ষেপ 1 অনুসরণ করুন।

পদক্ষেপ 4

  • এখন গ্রিডের শেষ প্রান্তে যান এবং সর্বশেষ সারিতে প্রথম কলামে একটি গ্রহাণু (*) থাকবে (এই সারিটি নতুন এন্ট্রি যুক্ত করতে হবে)। সেই পুরো সারিটি নির্বাচন করতে তারপরে ক্লিক করুন এবং তারপরে পাস ( Ctrl + V )। সেলে একটি রেড অস্ট্রিক্স থাকতে পারে (এটি সংরক্ষণ করা হয়নি তা বোঝায়)

পদক্ষেপ 5

  • সন্নিবেশ বিবৃতিটি ট্রিগার করতে অন্য যে কোনও সারিতে ক্লিক করুন (রেড অস্ট্রিক্স অদৃশ্য হয়ে যাবে)

দ্রষ্টব্য - 1 : যদি কলামগুলি লক্ষ্য সারণির মতো সঠিক ক্রমে না থাকে তবে আপনি সর্বদা দ্বিতীয় পদক্ষেপটি অনুসরণ করতে পারেন এবং লক্ষ্য সারণীর মতো কলামগুলি একই ক্রমে নির্বাচন করতে পারেন

দ্রষ্টব্য - 2 - আপনার যদি পরিচয় কলাম থাকে তবে এক্সিকিউট করুন SET IDENTITY_INSERT sometableWithIdentity ONএবং তারপরে উপরের পদক্ষেপগুলি অনুসরণ করুন এবং শেষে সম্পাদন করুনSET IDENTITY_INSERT sometableWithIdentity OFF


3

আপনি যদি স্থায়ীভাবে প্রচুর ডেটা স্থানান্তর করে থাকেন, অর্থাত্ কোনও টেম্প টেবিলটিকে জনবসতিপূর্ণ না করেন তবে আমি এসকিউএল সার্ভার আমদানি / রফতানি ডেটা টেবিল টু-টেবিল ম্যাপিংয়ের জন্য ব্যবহার করার পরামর্শ দেব ।

আপনার ম্যাপিংয়ে যখন টাইপ রূপান্তর এবং সম্ভাব্য মান কাটা থাকে তখন আমদানি / রফতানির সরঞ্জামটি সাধারণত সোজা এসকিউএল এর চেয়ে ভাল। সাধারণত, আপনার ম্যাপিং যত জটিল, আপনি সরাসরি এসকিউএল এর পরিবর্তে ইন্টিগ্রেশন সার্ভিসেস (এসএসআইএস) এর মতো একটি ইটিএল সরঞ্জাম ব্যবহার করছেন তত বেশি উত্পাদনশীল।

আমদানি / রফতানির সরঞ্জামটি আসলে একটি এসএসআইএস উইজার্ড এবং আপনি আপনার কাজটি ডিটিএসএক্স প্যাকেজ হিসাবে সংরক্ষণ করতে পারেন।



0
 Dim ofd As New OpenFileDialog
                ofd.Filter = "*.mdb|*.MDB"
                ofd.FilterIndex = (2)
                ofd.FileName = "bd1.mdb"
                ofd.Title = "SELECCIONE LA BASE DE DATOS ORIGEN (bd1.mdb)"
                ofd.ShowDialog()
                Dim conexion1 = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + ofd.FileName
                Dim conn As New OdbcConnection()
                conn.ConnectionString = conexion1
                conn.Open()



            'EN ESTE CODIGO SOLO SE AGREGAN LOS DATOS'
            Dim ofd2 As New OpenFileDialog
            ofd2.Filter = "*.mdb|*.MDB"
            ofd2.FilterIndex = (2)
            ofd2.FileName = "bd1.mdb"
            ofd2.Title = "SELECCIONE LA BASE DE DATOS DESTINO (bd1.mdb)"
            ofd2.ShowDialog()
            Dim conexion2 = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + ofd2.FileName
            Dim conn2 As New OdbcConnection()
            conn2.ConnectionString = conexion2
            Dim cmd2 As New OdbcCommand
            Dim CADENA2 As String

            CADENA2 = "INSERT INTO EXISTENCIA IN '" + ofd2.FileName + "' SELECT * FROM EXISTENCIA IN '" + ofd.FileName + "'"


            cmd2.CommandText = CADENA2
            cmd2.Connection = conn2
            conn2.Open()
            Dim dA2 As New OdbcDataAdapter
            dA2.SelectCommand = cmd2
            Dim midataset2 As New DataSet
            dA2.Fill(midataset2, "EXISTENCIA")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.