• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

کپی کردن بخشی از طلاعات یک جدول دیتابیس در جدول یک دیتابیس جدید

GamesWorld

کاربر فعال ارزهای دیجیتال
فروشنده معتبر
تاریخ عضویت
6 می 2012
نوشته‌ها
6,635
لایک‌ها
6,714
محل سکونت
رشت
سلام دوستان
دوتا دیتابیس دارم که میخوام بخشی از اطلاعات دیتابیس قدیمی رو به دیتابیس جدید منتقل کنم
به عنوان مثال دو دیتابیس دارم با نام 1 و 2
هردو مربوط به یک وبسایت هست و دارای جداول مشابه
در دیتابیس 1 یک table دارم بنام product
در table پروداکت یک column دارم بنام tag

حالا من میخوام تمامی اطلاعات قرار گرفته در column تگ رو کپی کنم در دیتابیس جدید
در واقع به این شکل میشه

از
database 1 , table product , column tag
به
database 2 , table product , column tag

توی نت سرچ کردم و این دستور رو پیدا کردم
INSERT INTO database2.table_name (column_name)
SELECT table_name.column_name FROM table_name

ولی وقتی این دستور رو میزنم ارور 1062 میده
#1062 - Duplicate entry '0-0' for key 'PRIMARY'
 

web-developer

Registered User
تاریخ عضویت
29 دسامبر 2015
نوشته‌ها
576
لایک‌ها
725
برادر اولا شما در دیتابیس جدید یک ستون ایجاد کنید با نام tag با مشخصات مورد نیاز
اگر شما قبلا سطرهایی دارین که میخاین اطلاعات یک ستونش فرق کنه از UPDATE باید استفاده کنین نه INSERT
چون INSERT یک سطر جدید بوجود میاره
در ضمن در کوئری بالا -اگر اسم کلید اصلی جدول شما id باشه- باید داخل پرانتز و select علاوه بر column_name از id هم استفاده می کردین یعنی می نوشتین
INSERT INTO database2.table_name (id,column_name)
SELECT table_name.id,table_name.column_name FROM table_name
 

GamesWorld

کاربر فعال ارزهای دیجیتال
فروشنده معتبر
تاریخ عضویت
6 می 2012
نوشته‌ها
6,635
لایک‌ها
6,714
محل سکونت
رشت
برادر اولا شما در دیتابیس جدید یک ستون ایجاد کنید با نام tag با مشخصات مورد نیاز
اگر شما قبلا سطرهایی دارین که میخاین اطلاعات یک ستونش فرق کنه از UPDATE باید استفاده کنین نه INSERT
چون INSERT یک سطر جدید بوجود میاره
در ضمن در کوئری بالا -اگر اسم کلید اصلی جدول شما id باشه- باید داخل پرانتز و select علاوه بر column_name از id هم استفاده می کردین یعنی می نوشتین
INSERT INTO database2.table_name (id,column_name)
SELECT table_name.id,table_name.column_name FROM table_name
بله درسته،، بعد از اینکه تاپیک زدم ، بیشتر دقت کر م و دیدم کوئری بالا با چیزی که من مدنظر دارم فرق داره
فکر کنم باید از آپدیت استفاده کنم، فقط از طریق آپدیت میشه از یک دیتابیس قدیمی به دیتابیس جدید انتقال داد؟
 

web-developer

Registered User
تاریخ عضویت
29 دسامبر 2015
نوشته‌ها
576
لایک‌ها
725
نه اپدیت باعث میشه سطرهای قبلی که الان موجود هستند اپدیت بشن
ولی inser یعنی یک سطر جدید ایجاد کن
مگر سطرهای شما الان موجود نیستند و میخاین اطلاعات اضافه بشه فقط؟ اگر سطرهای موجودند برای تغییر باید از update استفاده کنین
 

GamesWorld

کاربر فعال ارزهای دیجیتال
فروشنده معتبر
تاریخ عضویت
6 می 2012
نوشته‌ها
6,635
لایک‌ها
6,714
محل سکونت
رشت
نه اپدیت باعث میشه سطرهای قبلی که الان موجود هستند اپدیت بشن
ولی inser یعنی یک سطر جدید ایجاد کن
مگر سطرهای شما الان موجود نیستند و میخاین اطلاعات اضافه بشه فقط؟ اگر سطرهای موجودند برای تغییر باید از update استفاده کنین
ببینید در سایتم بخشی از مطالب رو حذف کردم، حالا میخوام از بک آپ دیتابیس قدیمی مطالبی رو که حذف کردم رو مجددا به سایت اضافه کنم
 

phpir4659

کاربر تازه وارد
تاریخ عضویت
3 ژانویه 2015
نوشته‌ها
432
لایک‌ها
123
محل سکونت
»»»Laravel«««
سلام دوست عزیز شما باید ابتدا
select *From tb_name column_name
کنید بعد ازش یه بک آپ بگیرید
بعد تویه دیتابیس جدید برای جدول همین select رو انجام بدید بعدش اون فایلی که خروجی گرفتی رو import کنید .
 

web-developer

Registered User
تاریخ عضویت
29 دسامبر 2015
نوشته‌ها
576
لایک‌ها
725
ببینید در سایتم بخشی از مطالب رو حذف کردم، حالا میخوام از بک آپ دیتابیس قدیمی مطالبی رو که حذف کردم رو مجددا به سایت اضافه کنم
اسکریپت سایتتون اختصاصیه یا وردپرسه؟
در اکثر cms ها رابطه بین یک عنصر تیبل با عنصر دیگه ای از تیبل دیگه هست یعنی مثلا تیبل post شامل پستهاست تیبل post-cat شامل دسته هاست و رابطه بین رکوردها وجود داره
این حالتی که شما میگی ساده ترین حالته ولی بعضی مواقع که رابطه بین جدول ها باشه با این روش کلی error در صفحات دیگه تون دیده میشه
مثلا یه صفحه ای میاد ای دی پست رو می خونه بعد میره در یه تیبل دیگه Category مربوط به اون رو پیدا کنه می بینه وجود نداره پس error میده
 

GamesWorld

کاربر فعال ارزهای دیجیتال
فروشنده معتبر
تاریخ عضویت
6 می 2012
نوشته‌ها
6,635
لایک‌ها
6,714
محل سکونت
رشت
اسکریپت سایتتون اختصاصیه یا وردپرسه؟
در اکثر cms ها رابطه بین یک عنصر تیبل با عنصر دیگه ای از تیبل دیگه هست یعنی مثلا تیبل post شامل پستهاست تیبل post-cat شامل دسته هاست و رابطه بین رکوردها وجود داره
این حالتی که شما میگی ساده ترین حالته ولی بعضی مواقع که رابطه بین جدول ها باشه با این روش کلی error در صفحات دیگه تون دیده میشه
مثلا یه صفحه ای میاد ای دی پست رو می خونه بعد میره در یه تیبل دیگه Category مربوط به اون رو پیدا کنه می بینه وجود نداره پس error میده
دیتابیس مربوط به اسکریپت opencart میشه , طبق سرچی که انجام دادم دستور زیر رو پیدا کردم
update database1.table1, database2.table1
set database1.table1.columnA = database2.table1.columnA

ولی در عمل دستور آپدیت بالا فقط اطلاعات مورد نظر رو پاک میکنه و اونم فقط در دیتا بیس قدیمی

فکر کنم بصورت تصویری بهتر برسونم چه چیزی مد نظرم هست
34yj4zdv48ip.jpg
 
Last edited:

web-developer

Registered User
تاریخ عضویت
29 دسامبر 2015
نوشته‌ها
576
لایک‌ها
725
برادر اینجوری نمیشه شما فقط برای یک دیتابیس کدها رو بنویسی
باید ساختار دیتابیس رو دید و اینکه کدام جدول با کدوم یکی در ارتباطه صرفا با این کد نمیشه
 

web-developer

Registered User
تاریخ عضویت
29 دسامبر 2015
نوشته‌ها
576
لایک‌ها
725
با این عکسی که گذاشتی فرق کرد
ظاهرا فقط همونه
کد زیر رو در فایلی قرار بدین و ادرس فایل رو فراخوانی کنید

PHP:
<?php 
$conn=new mysqli("localhost","root","pass","db1");
$conn->set_charset("utf8");
$query="SELECT * FROM oc_product_description";
$result=$conn->query($query);
if($result->num_rows){
    $conn=new mysqli("localhost","root","pass","db2");
    $conn->set_charset("utf8");
    while ($row = $result->fetch_assoc()) {
        $meta_description=$row['meta_description'];
        $id=$row['product_id'];
    $query="UPDATE  oc_product_description SET meta_description='$meta_description' WHERE product_id=$id";   
    $result=$conn->query($query);
    var_dump($result);
    }
}
?>
فقط در کد بالا نام دیتا بیس اول و دوم و پسورد و یوزر ها رو وارد کنید.
نتیجه رو اینجا بزارین
 
Last edited:

web-developer

Registered User
تاریخ عضویت
29 دسامبر 2015
نوشته‌ها
576
لایک‌ها
725
در هاستی قرار بدین که هر دو دیتابیس اونجان و بعد ادرس فایل php رو در ادرس بار بنویسین و نتیجه رو اینجا بزارین
 

GamesWorld

کاربر فعال ارزهای دیجیتال
فروشنده معتبر
تاریخ عضویت
6 می 2012
نوشته‌ها
6,635
لایک‌ها
6,714
محل سکونت
رشت
در هاستی قرار بدین که هر دو دیتابیس اونجان و بعد ادرس فایل php رو در ادرس بار بنویسین و نتیجه رو اینجا بزارین
من فعلا دارم روی لوکال هاست تست میکنم که وقتی فایل رو قرار دادم و فراخوانی کردم ارور زیر رو داد
00.png
 

web-developer

Registered User
تاریخ عضویت
29 دسامبر 2015
نوشته‌ها
576
لایک‌ها
725
برادر این error میگه اصلا نتونست چیزی از جدول اول و تیبل مدنظر انتخاب کنه و هیچ چیزی در دسترسش نیست
احتمالا در نوشتن اسامی تیبل ها اشتباه شده یا جایی
شما هر دو دیتابیس رو خصوصی بفرست برای ما درستش می کنیم
 

GamesWorld

کاربر فعال ارزهای دیجیتال
فروشنده معتبر
تاریخ عضویت
6 می 2012
نوشته‌ها
6,635
لایک‌ها
6,714
محل سکونت
رشت
برادر این error میگه اصلا نتونست چیزی از جدول اول و تیبل مدنظر انتخاب کنه و هیچ چیزی در دسترسش نیست
احتمالا در نوشتن اسامی تیبل ها اشتباه شده یا جایی
شما هر دو دیتابیس رو خصوصی بفرست برای ما درستش می کنیم
براتون پ.خ شد
 

web-developer

Registered User
تاریخ عضویت
29 دسامبر 2015
نوشته‌ها
576
لایک‌ها
725
برادر این تیبل id منحصر به فرد نداشت و باید product_id و language_id رو باهم ست می کردیم
برات انجام دادم و دیتابیس خروجی رو فرستادم در خصوصی
موفق باشید
 
بالا