মাইএসকিউএলে, কীভাবে একই ডাটাবেসের মধ্যে একটি টেবিলের সামগ্রী অন্য টেবিলের মধ্যে অনুলিপি করবেন?


118

আমি মাইএসকিউএলে নতুন new আমি একই ডাটাবেসের মধ্যে একটি টেবিলের সামগ্রী অন্য টেবিলের মধ্যে অনুলিপি করতে চাই। মূলত, আমি অন্য টেবিল থেকে একটি টেবিল toোকাতে চাই। এটি করার সহজ উপায় আছে?

উত্তর:


184

INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;

সম্পাদনা: বা যদি টেবিলগুলির বিভিন্ন কাঠামো থাকে তবে আপনি এটিও করতে পারেন:

INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;

সম্পাদনা করুন: এটি সীমাবদ্ধ করার জন্য ..

INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1

এই কোয়েরিটি চলাকালীন কেউ যদি উত্স টেবিলের মধ্যে সন্নিবেশ অপারেশন করতে চান তবে কী হবে? এটি operationোকানো অপারেশন তালাবদ্ধ বা না?
লাকাকুশ কুর্মি

135

যদি টেবিলটি বিদ্যমান না থাকে, আপনি একই স্কিমার মতো একটি তৈরি করতে পারেন:

CREATE TABLE table2 LIKE table1;

তারপরে, তথ্যটি অনুলিপি করতে:

INSERT INTO table2 SELECT * FROM table1

1
আমি এই কোড পাওয়া SELECT * INTO newTable FROM sourceTableমধ্যে w3school , কেন এটা কাজ করছে নাMySQL
Kasun Siyambalapitiya

@ কাসুনসিয়াম্বলাপিতিয়া SELECT ... INTOবলতে কোনও আউটপুট ফাইলে বা ভেরিয়েবলগুলিতে একটি টেবিল রফতানি করতে বোঝায়; সরাসরি কোনও টেবিলের মধ্যে নয়। Dev.mysql.com/doc/refman/5.7/en/select-into.html
ডক্টর জে

@ কাসুন সায়াম্বলাপিতিয় যে w3school পৃষ্ঠাটি ভিন্ন এসকিউএল এর জন্য, মাইএসকিউএল-এর উদ্দেশ্যে নয়। ডাব্লু 3 স্কুলগুলিতে এখন ত্রুটি প্রতিবেদন করার সমস্যা রয়েছে, যদি সমস্যাগুলি সঠিক জ্ঞানের সাথে সহায়তা করার জন্য তাদের সাইটে এটি রিপোর্ট করে।
নাইটওয়

27

যদি টেবিল 1 বড় হয় এবং আপনি অনুলিপি প্রক্রিয়াটির সময়কালের জন্য এটি লক করতে না চান, আপনি পরিবর্তে ডাম্প এবং লোড করতে পারেন:

CREATE TABLE table2 LIKE table1;

SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;

স্ট্যাকওভারফ্লো . com/a/9536680/351903 সমাধানটি ব্যবহার করে আমি একটি আরডিএসে ডাম্প দেওয়ার চেষ্টা করেছি । ফাইলটি তৈরি হয়েছে তবে এটি দীর্ঘ সময়ের জন্য 0 আকারে রয়ে গেছে। এছাড়াও, চেক করার সময় show processlist, আমি কোনও কোয়েরি চালিত দেখতে পেলাম না। সমস্যাটি কী তা নিশ্চিত নয়।
সন্দীপন নাথ

15

এটি আমার পক্ষে কাজ করেছে,

CREATE TABLE newtable LIKE oldtable;

পুরানো টেবিলের সাহায্যে নতুন টেবিলের প্রতিরূপ

INSERT newtable SELECT * FROM oldtable;

সমস্ত সারি ডেটা নতুন টেবিলে অনুলিপি করে।

ধন্যবাদ


10

আপনি যদি একক শটে সামগ্রীটি তৈরি এবং অনুলিপি করতে চান তবে কেবল নির্বাচন করুন:

টেবিল তৈরি করুন new_tbl নির্বাচন করুন * অরিজিন_টিবিএল থেকে;


4
+1 - যদিও নতুন টেবিলের প্রথম থেকেই সূচক সংজ্ঞা থাকবে না। "তৈরি করুন ... এর মতো ..." পদ্ধতির সূচি সংজ্ঞাগুলিও অনুলিপি করবে।
মার্টিন

2

এটি আমার পক্ষে কাজ করেছে। আপনি যেখানে নির্বাচন এবং সীমাবদ্ধ বিধিগুলি সহ নির্বাচন নির্বাচন বিবৃতিটিকে আরও জটিল করে তুলতে পারেন।

প্রথমে আপনার বড় টেবিলটিকে নকল করুন (ডেটা ছাড়াই), নিম্নলিখিত কোয়েরিটি চালান, এবং তারপরে বৃহত্তর টেবিলটি কেটে দিন।

INSERT INTO table_small (SELECT * FROM table_large WHERE column = 'value' LIMIT 100)

সুপার সিম্পল :-)


0
CREATE TABLE target_table SELECT * FROM source_table;

এটি কেবল উত্স টেবিলের মতো একই কাঠামোযুক্ত একটি নতুন টেবিল তৈরি করে এবং Source_table থেকে সমস্ত সারিটিকে লক্ষ্য_ টেবিলটিতে অনুলিপি করে।

CREATE TABLE target_table SELECT * FROM source_table WHERE condition;

আপনার যা দরকার তা কিছু সারি target_table অনুলিপি করা থাকে, তাহলে একটি শর্ত ভিতরে প্রয়োগ যেখানে দফা


-3

এটা চেষ্টা কর. আমার ওরাকল 10 জি তে ভাল কাজ করে,

CREATE TABLE new_table
  AS (SELECT * FROM old_table);

8
তবে প্রশ্নটি মাইএসকিউএল সম্পর্কে।
সালমান এ

এটি এর জন্য + দিয়েছে, কারণ এটি মাইএসকিউএল এর সাথেও কাজ করে। dev.mysql.com/doc/refman/5.7/en/create-table-select.html
ড্যানিয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.