سلام
فرض کنیم دو دیتابیس در mySQL داریم
دیتابیس A
دیتابیس B
در دیتابیس B ، در جدول posts تعدادی رکورد (مثال : 1000 رکورد) وجود داره. (جدول posts رو کلی مثال میزنم. هر جدول دیگه میتونه باشه )
میخوام فقط از رکوردهای مربوط به product جدول posts در دیتابیس A ، اکسپورت بگیرم (مثال: 500 رکورد product) اون رو در:
جدول posts دیتابیس B ایمپورت کنم.
بصورت پیشفرض اگر اینکار انجام بشه، کل رکوردهای مربوطه دیتابیس B حذف میشن و رکوردهای جدید جایگزین میشه.
برای اینکه کاملا متوجه بشین، بهتره که روی لوکال تست کنید.
برای حل این مشکل چیکار کنم که رکوردهای قبلی حذف نشن و رکوردهای جدید به اون اضافه بشن.
با تشکر
خب دستورات insert رو استفاده کنه و داده ها رو بده بهش
خروجی بزن بهت ارایه که داد وارد این سایت شو و به صورت انلاین اون ارایه رو تبدیل کن به کد sql
من تست کردم و مثلا خروجیش میشه کد زیر :
INSERT INTO `posts` (`id`, `migration`, `batch`) VALUES
('1', '2014_10_12_000000_create_users_table', '1'),
('2', '2014_10_12_100000_create_password_resets_table', '1'),
('3', '2019_08_19_000000_create_failed_jobs_table', '1'),
('4', '2019_12_14_000001_create_personal_access_tokens_table', '1'),
('5', '2023_01_22_160504_create_login_activities_table', '1');
سلام
یک راه حل اولیه و ساده که میتونم بهت پیشنهاد بدم اینه که در بخش export گرفتن mysql
یک قسمت داره که به چه نوعی میخوایی داده هاتو خروجی بگیری ازشون که پیشفرض SQL هست
شما بیا به صورت PHP Array خروجی بگیر داده هایی که میخوایی رو
حالا خیلی راحت همین ارایه رو ببر توی پروژت یک حلقه بزار و عمل درج رو یک بار خودت دستی براش پیاده سازی کن
مثلا :
<?php
$db_conn = mysqli_connect("localhost", "root", "", "devooti");
$user_data = array(
"0" => array("Tricia Allison", "USA", "True"),
"1" => array("Karla Newman", "China", "True"),
"2" => array("Jessica Munoz", "UK", "False")
);
$serialized_data = serialize($user_data);
$sql = "insert into list (details) value ('$serialized_data')";
mysqli_query($db_conn, $sql);
?>
@salar.mohammad2013
ممنون
من میخوام بدون هیچ کدنویسی اینکار از طریق خود mysql انجام بشه
فرض کن ضخصی که میخواد اینکارو انجام بده، هیچ دانشی از وب نداره .
اما با ایمپورت و اکسپورت mysql کاملا اشناست.
خب دستورات insert رو استفاده کنه و داده ها رو بده بهش
خروجی بزن بهت ارایه که داد وارد این سایت شو و به صورت انلاین اون ارایه رو تبدیل کن به کد sql
من تست کردم و مثلا خروجیش میشه کد زیر :
INSERT INTO `posts` (`id`, `migration`, `batch`) VALUES
('1', '2014_10_12_000000_create_users_table', '1'),
('2', '2014_10_12_100000_create_password_resets_table', '1'),
('3', '2019_08_19_000000_create_failed_jobs_table', '1'),
('4', '2019_12_14_000001_create_personal_access_tokens_table', '1'),
('5', '2023_01_22_160504_create_login_activities_table', '1');
سلام دوست من 🖐
امیدوارم حالت خوب و عالی باشی✨
برای انجام این کار توی MySQL و جلوگیری از حذف رکوردهای قبلی در دیتابیس B و اضافه کردن رکوردهای جدید به جدول posts، میتونی از دستورات SQL و ترکیبی از INSERT INTO
و UPDATE
استفاده کنی. اول از دیتابیس A اطلاعات مورد نظر را استخراج (export) میکنید و سپس اونها رو به دیتابیس B اضافه (import) کن. در ادامه یک رویه (stored procedure) رو در ادامه برات مثال میزنم
product
در جدول posts
دیتابیس A وجود دارع، میتونی از دستور SELECT
استفاده کنی:SELECT * FROM database_A.posts WHERE product = 'محصول مورد نظر';
posts
اضافه کن میتونی از دستور INSERT INTO
استفاده کن:INSERT INTO database_B.posts (column1, column2, ...) VALUES (value1, value2, ...);
برای اضافه کردن بیشترین تعداد رکوردها به دیتابیس B، میتونی از یک حلقه در برنامهنویسی استفاده کنی تا رکوردها را به تعداد مورد نظر ایمپورت کنی.
UPDATE
به جای INSERT INTO
استفاده کنی . این دستور بهت اجازه میده رکوردهای موجود را بهروزرسانی کنی یا رکوردهای جدید را اضافه کنی.یک روش (stored procedure) دیگه برای انجام این کار در MySQL میتواند به شکل زیر باشه
DELIMITER //
CREATE PROCEDURE ImportProducts()
BEGIN
-- استخراج اطلاعات مربوط به محصول از دیتابیس A
INSERT INTO database_B.posts (column1, column2, ...)
SELECT column1, column2, ...
FROM database_A.posts
WHERE product = 'محصول مورد نظر';
END;
//
DELIMITER ;
بعد میتونی این روند رو اجرا کرده و اطلاعات مورد نظر را به دیتابیس B انتقال بدی
CALL ImportProducts();
این روش بهت امکان میده تا اطلاعات محصولات را به دیتابیس B اضافه کنی بدون اینکه رکوردهای قبلی حذف بشن.
روش دوم
. از دستورات mysqldump
برای اکسپورت دادهها و mysql
برای ایمپورت دادهها استفاده میکنیم. یه راهنمای کامل تر رو بهت میگم برای مشکلت
mysqldump
برای اکسپورت دادههای مربوط به محصول از دیتابیس A استفاده کن و نتیجه را در یک فایل SQL ذخیره میکنیم :mysqldump -u username -p database_A posts --where="product='محصول مورد نظر'" > export.sql
در این دستور:
username
نام کاربری دسترسی به دیتابیس A است.database_A
نام دیتابیس A است.posts
نام جدول مورد نظر در دیتابیس A است.product='محصول مورد نظر'
شرطی است که تعیین میکند که کدام رکوردها باید اکسپورت شوند.export.sql
نام فایلی است که دادهها در آن ذخیره میشوند.export.sql
اکسپورت میشن.mysql
برای این کار استفاده میکنیم:mysql -u username -p database_B < export.sql
در این دستور:
username
نام کاربری دسترسی به دیتابیس B است.database_B
نام دیتابیس B است.export.sql
نام فایلی است که حاوی دادههای اکسپورت شده از دیتابیس A است.با این کار، دادههای مربوط به محصول از دیتابیس A به دیتابیس B انتقال پیدا میشن و رکوردهای قبلی در دیتابیس B حذف نمیشن
امیدوارم پاسخم بهت کمک کرده باشه ❤️
موفق و پیروز باشی 🤘🌹
@mahdi.nazari
سلام
انجام دادم نشد.
البته در پیام بالاتر گفتم که فرض کنیم شخصی که میخواد اینکارو انجام بده، هیچ دانشی از کدنویسی نداره .
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟