correlation with https://teguhth.blogspot.com/2025/12/create-tools-migration-from-mongodb-to.html
1. data migration server A Maria to server B mongo
server A Mariadb
ip : 10.10.10.90
db : teguhth
port 3306
user : admin
password : admin
server B mongodb
ip : 10.10.10.9
db : mariadbsample
port 27017
user : admin
password : admin
buat script shell untuk migrasi dari server A maria to server B mongo
2. run script migrasi
sh migrasi_barang_maria_to_mongo.sh
sh migrasi_customer_maria_to_mongo.sh
sh migrasi_suplier_to_mongo.sh
sh migrasi_pasok_maria_to_mongo.sh
sh migrasi_pembelian_maria_to_mongo.sh
[root@teguhth-all reserve]# pwd
/data/migrasi/mongo/reserve
[root@teguhth-all reserve]# ls -l
total 20
-rw-r--r-- 1 root root 1997 Dec 23 09:19 migrasi_barang_maria_to_mongo.sh
-rw-r--r-- 1 root root 2093 Dec 23 10:57 migrasi_customer_maria_to_mongo.sh
-rw-r--r-- 1 root root 2046 Dec 23 14:37 migrasi_pasok_maria_to_mongo.sh
-rw-r--r-- 1 root root 2125 Dec 23 15:00 migrasi_pembelian_maria_to_mongo.sh
-rw-r--r-- 1 root root 2103 Dec 23 14:51 migrasi_suplier_to_mongo.sh
[root@teguhth-all reserve]#
3. run script
4. result migrasi
5. script migrasi
[root@teguhth-all reserve]# pwd
/data/migrasi/mongo/reserve
[root@teguhth-all reserve]# cat migrasi_barang_maria_to_mongo.sh
#!/bin/bash
#################################
# MariaDB (Server A)
#################################
MDB_HOST="10.10.10.90"
MDB_PORT="3306"
MDB_DB="teguhth"
MDB_USER="admin"
MDB_PASS="admin"
#################################
# MongoDB (Server B)
#################################
MONGO_HOST="10.10.10.9"
MONGO_PORT="27017"
MONGO_DB="mariadbsample"
MONGO_USER="admin"
MONGO_PASS="admin"
MONGO_COLLECTION="barang"
#################################
# Temp file
#################################
CSV_FILE="/data/migrasi/mongo/datatmp/barang.csv"
echo "== Export MariaDB -> CSV =="
mariadb -h${MDB_HOST} -P${MDB_PORT} -u${MDB_USER} -p${MDB_PASS} \
${MDB_DB} -e "
SELECT
KODE_BARANG,
NAMA_BARANG,
SATUAN_BARANG,
STOK_BARANG
FROM barang;
" --batch --raw --silent > ${CSV_FILE}
if [ $? -ne 0 ]; then
echo "❌ Gagal export dari MariaDB"
exit 1
fi
echo "== Import CSV -> MongoDB =="
while IFS=$'\t' read -r KODE NAMA SATUAN STOK
do
#: <<'COMMENT'
### with Primary Key begin ###
mongosh --host ${MONGO_HOST} --port ${MONGO_PORT} \
-u ${MONGO_USER} -p ${MONGO_PASS} \
--authenticationDatabase admin \
${MONGO_DB} --quiet --eval "
db.${MONGO_COLLECTION}.updateOne(
{ _id: \"${KODE}\" },
{
\$set: {
KODE_BARANG: \"${KODE}\",
NAMA_BARANG: \"${NAMA}\",
SATUAN_BARANG: \"${SATUAN}\",
STOK_BARANG: \"${STOK}\"
}
},
{ upsert: true }
);
"
#COMMENT
### with primary key end ###
### without primary key start ###
: <<'COMMENT'
mongosh --host ${MONGO_HOST} --port ${MONGO_PORT} \
-u ${MONGO_USER} -p ${MONGO_PASS} \
--authenticationDatabase admin \
${MONGO_DB} --quiet --eval "
db.${MONGO_COLLECTION}.updateOne(
{ KODE_BARANG: \"${KODE}\" },
{
\$set: {
KODE_BARANG: \"${KODE}\",
NAMA_BARANG: \"${NAMA}\",
SATUAN_BARANG: \"${SATUAN}\",
STOK_BARANG: Number(\"${STOK}\")
}
},
{ upsert: true }
);
"
### withour primary key end ###
COMMENT
done < ${CSV_FILE}
echo "✅ Migrasi selesai"
[root@teguhth-all reserve]#
[root@teguhth-all reserve]# pwd
/data/migrasi/mongo/reserve
[root@teguhth-all reserve]# cat migrasi_suplier_to_mongo.sh
#!/bin/bash
#################################
# MariaDB (Server A)
#################################
MDB_HOST="10.10.10.90"
MDB_PORT="3306"
MDB_DB="teguhth"
MDB_USER="admin"
MDB_PASS="admin"
MARIA_TABLE="suplier"
#################################
# MongoDB (Server B)
#################################
MONGO_HOST="10.10.10.9"
MONGO_PORT="27017"
MONGO_DB="mariadbsample"
MONGO_USER="admin"
MONGO_PASS="admin"
MONGO_COLLECTION="suplier"
#################################
# Temp file
#################################
CSV_FILE="/data/migrasi/mongo/datatmp/suplier.csv"
echo "== Export MariaDB -> CSV =="
mariadb -h${MDB_HOST} -P${MDB_PORT} -u${MDB_USER} -p${MDB_PASS} \
${MDB_DB} -e "
SELECT
KODE_SUPLIER,
NAMA_SUPLIER,
ALAMAT_SUPLIER,
KOTA_SUPLIER,
TELEPON_SUPLIER
FROM ${MARIA_TABLE};
" --batch --raw --silent > ${CSV_FILE}
if [ $? -ne 0 ]; then
echo "❌ Gagal export dari MariaDB"
exit 1
fi
echo "== Import CSV -> MongoDB =="
while IFS=$'\t' read -r KODE NAMA ALAMAT KOTA TELP
do
: <<'COMMENT'
#################################
# ✅ WITH PRIMARY KEY (REKOMENDASI)
#################################
mongosh --host ${MONGO_HOST} --port ${MONGO_PORT} \
-u ${MONGO_USER} -p ${MONGO_PASS} \
--authenticationDatabase admin \
${MONGO_DB} --quiet --eval "
db.${MONGO_COLLECTION}.updateOne(
{ _id: \"${KODE}\" },
{
\$set: {
KODE_SUPLIER: \"${KODE}\",
NAMA_SUPLIER: \"${NAMA}\",
ALAMAT_SUPLIER: \"${ALAMAT}\",
KOTA_SUPLIER: \"${KOTA}\",
TELEPON_SUPLIER: \"${TELP}\"
}
},
{ upsert: true }
);
"
COMMENT
#################################
# ⚠ WITHOUT PRIMARY KEY (OPTIONAL)
#################################
#: <<'COMMENT'
mongosh --host ${MONGO_HOST} --port ${MONGO_PORT} \
-u ${MONGO_USER} -p ${MONGO_PASS} \
--authenticationDatabase admin \
${MONGO_DB} --quiet --eval "
db.${MONGO_COLLECTION}.insertOne({
KODE_SUPLIER: \"${KODE}\",
NAMA_SUPLIER: \"${NAMA}\",
ALAMAT_SUPLIER: \"${ALAMAT}\",
KOTA_SUPLIER: \"${KOTA}\",
TELEPON_SUPLIER: \"${TELP}\"
});
"
#COMMENT
done < ${CSV_FILE}
echo "✅ Migrasi suplier selesai"
[root@teguhth-all reserve]#
[root@teguhth-all reserve]# pwd
/data/migrasi/mongo/reserve
[root@teguhth-all reserve]# cat migrasi_customer_maria_to_mongo.sh
#!/bin/bash
#################################
# MariaDB (Server A)
#################################
MDB_HOST="10.10.10.90"
MDB_PORT="3306"
MDB_DB="teguhth"
MDB_USER="admin"
MDB_PASS="admin"
#################################
# MongoDB (Server B)
#################################
MONGO_HOST="10.10.10.9"
MONGO_PORT="27017"
MONGO_DB="mariadbsample"
MONGO_USER="admin"
MONGO_PASS="admin"
MONGO_COLLECTION="customer"
#################################
# Temp file
#################################
CSV_FILE="/data/migrasi/mongo/datatmp/customer.csv"
echo "== Export MariaDB -> CSV =="
mariadb -h${MDB_HOST} -P${MDB_PORT} -u${MDB_USER} -p${MDB_PASS} \
${MDB_DB} -e "
SELECT
KODE_CUSTOMER,
NAMA_CUSTOMER,
ALAMAT_CUSTOMER,
KOTA_CUSTOMER,
TELEPON_CUSTOMER
FROM customer;
" --batch --raw --silent > ${CSV_FILE}
if [ $? -ne 0 ]; then
echo "❌ Gagal export dari MariaDB"
exit 1
fi
echo "== Import CSV -> MongoDB =="
while IFS=$'\t' read -r KODE NAMA ALAMAT KOTA TELP
do
: <<'COMMENT'
#################################
# ✅ WITH PRIMARY KEY (REKOMENDASI)
#################################
mongosh --host ${MONGO_HOST} --port ${MONGO_PORT} \
-u ${MONGO_USER} -p ${MONGO_PASS} \
--authenticationDatabase admin \
${MONGO_DB} --quiet --eval "
db.${MONGO_COLLECTION}.updateOne(
{ _id: \"${KODE}\" },
{
\$set: {
KODE_CUSTOMER: \"${KODE}\",
NAMA_CUSTOMER: \"${NAMA}\",
ALAMAT_CUSTOMER: \"${ALAMAT}\",
KOTA_CUSTOMER: \"${KOTA}\",
TELEPON_CUSTOMER: \"${TELP}\"
}
},
{ upsert: true }
);
"
COMMENT
#################################
# ⚠ WITHOUT PRIMARY KEY (OPTIONAL)
#################################
#: <<'COMMENT'
mongosh --host ${MONGO_HOST} --port ${MONGO_PORT} \
-u ${MONGO_USER} -p ${MONGO_PASS} \
--authenticationDatabase admin \
${MONGO_DB} --quiet --eval "
db.${MONGO_COLLECTION}.insertOne({
KODE_CUSTOMER: \"${KODE}\",
NAMA_CUSTOMER: \"${NAMA}\",
ALAMAT_CUSTOMER: \"${ALAMAT}\",
KOTA_CUSTOMER: \"${KOTA}\",
TELEPON_CUSTOMER: \"${TELP}\"
});
"
#COMMENT
done < ${CSV_FILE}
echo "✅ Migrasi customer selesai"
[root@teguhth-all reserve]#
[root@teguhth-all reserve]# pwd
/data/migrasi/mongo/reserve
[root@teguhth-all reserve]# cat migrasi_pasok_maria_to_mongo.sh
#!/bin/bash
#################################
# MariaDB
#################################
MDB_HOST="10.10.10.90"
MDB_PORT="3306"
MDB_DB="teguhth"
MDB_USER="admin"
MDB_PASS="admin"
MARIA_TABLE="pasok"
#################################
# MongoDB
#################################
MONGO_HOST="10.10.10.9"
MONGO_PORT="27017"
MONGO_DB="mariadbsample"
MONGO_USER="admin"
MONGO_PASS="admin"
MONGO_COLLECTION="pasok"
#################################
# Temp CSV
#################################
CSV_FILE="/data/migrasi/mongo/datatmp/pasok.csv"
echo "== Export MariaDB -> CSV =="
mariadb -h${MDB_HOST} -P${MDB_PORT} -u${MDB_USER} -p${MDB_PASS} \
${MDB_DB} -e "
SELECT
KODE_PASOK,
KODE_BARANG,
KODE_SUPLIER,
TANGGAL_PASOK,
JUMLAH_PASOK
FROM ${MARIA_TABLE};
" --batch --raw --silent > ${CSV_FILE}
[ $? -ne 0 ] && echo "❌ Export gagal" && exit 1
echo "== Import CSV -> MongoDB =="
while IFS=$'\t' read -r KP KB KS TGL JML
do
: <<'COMMENT'
#################################
# ✅ WITH COMPOSITE PRIMARY KEY
#################################
mongosh --host ${MONGO_HOST} --port ${MONGO_PORT} \
-u ${MONGO_USER} -p ${MONGO_PASS} \
--authenticationDatabase admin \
${MONGO_DB} --quiet --eval "
db.${MONGO_COLLECTION}.updateOne(
{ _id: \"${KP}|${KB}|${KS}\" },
{
\$set: {
KODE_PASOK: \"${KP}\",
KODE_BARANG: \"${KB}\",
KODE_SUPLIER: \"${KS}\",
TANGGAL_PASOK: ISODate(\"${TGL}T00:00:00Z\"),
JUMLAH_PASOK: Number(\"${JML}\")
}
},
{ upsert: true }
);
"
COMMENT
#################################
# ⚠ WITHOUT PRIMARY KEY (OPTIONAL)
#################################
#: <<'COMMENT'
mongosh --host ${MONGO_HOST} --port ${MONGO_PORT} \
-u ${MONGO_USER} -p ${MONGO_PASS} \
--authenticationDatabase admin \
${MONGO_DB} --quiet --eval "
db.${MONGO_COLLECTION}.insertOne({
KODE_PASOK: \"${KP}\",
KODE_BARANG: \"${KB}\",
KODE_SUPLIER: \"${KS}\",
TANGGAL_PASOK: ISODate(\"${TGL}T00:00:00Z\"),
JUMLAH_PASOK: Number(\"${JML}\")
});
"
#COMMENT
done < ${CSV_FILE}
echo "✅ Migrasi pasok selesai"
[root@teguhth-all reserve]#
[root@teguhth-all reserve]# pwd
/data/migrasi/mongo/reserve
[root@teguhth-all reserve]# cat migrasi_pembelian_maria_to_mongo.sh
#!/bin/bash
#################################
# MariaDB (Server A)
#################################
MDB_HOST="10.10.10.90"
MDB_PORT="3306"
MDB_DB="teguhth"
MDB_USER="admin"
MDB_PASS="admin"
MARIA_TABLE="pembelian"
#################################
# MongoDB (Server B)
#################################
MONGO_HOST="10.10.10.9"
MONGO_PORT="27017"
MONGO_DB="mariadbsample"
MONGO_USER="admin"
MONGO_PASS="admin"
MONGO_COLLECTION="pembelian"
#################################
# Temp file
#################################
CSV_FILE="/data/migrasi/mongo/datatmp/pembelian.csv"
echo "== Export MariaDB -> CSV =="
mariadb -h${MDB_HOST} -P${MDB_PORT} -u${MDB_USER} -p${MDB_PASS} \
${MDB_DB} -e "
SELECT
KODE_PEMBELIAN,
KODE_BARANG,
KODE_CUSTOMER,
TANGGAL_PEMBELIAN,
JUMLAH_PEMBELIAN
FROM ${MARIA_TABLE};
" --batch --raw --silent > ${CSV_FILE}
if [ $? -ne 0 ]; then
echo "❌ Gagal export dari MariaDB"
exit 1
fi
echo "== Import CSV -> MongoDB =="
while IFS=$'\t' read -r KP KB KC TGL JML
do
#: <<'COMMENT'
#################################
# ✅ WITH PRIMARY KEY (REKOMENDASI)
#################################
mongosh --host ${MONGO_HOST} --port ${MONGO_PORT} \
-u ${MONGO_USER} -p ${MONGO_PASS} \
--authenticationDatabase admin \
${MONGO_DB} --quiet --eval "
db.${MONGO_COLLECTION}.updateOne(
{ _id: \"${KP}|${KB}|${KC}\" },
{
\$set: {
KODE_PEMBELIAN: \"${KP}\",
KODE_BARANG: \"${KB}\",
KODE_CUSTOMER: \"${KC}\",
TANGGAL_PEMBELIAN: \"${TGL}\",
JUMLAH_PEMBELIAN: Number(\"${JML}\")
}
},
{ upsert: true }
);
"
#COMMENT
#################################
# ⚠ WITHOUT PRIMARY KEY (OPTIONAL)
#################################
: <<'COMMENT'
mongosh --host ${MONGO_HOST} --port ${MONGO_PORT} \
-u ${MONGO_USER} -p ${MONGO_PASS} \
--authenticationDatabase admin \
${MONGO_DB} --quiet --eval "
db.${MONGO_COLLECTION}.insertOne({
KODE_PEMBELIAN: \"${KP}\",
KODE_BARANG: \"${KB}\",
KODE_CUSTOMER: \"${KC}\",
TANGGAL_PEMBELIAN: \"${TGL}\",
JUMLAH_PEMBELIAN: Number(\"${JML}\")
});
"
COMMENT
done < ${CSV_FILE}
echo "✅ Migrasi pembelian selesai"
[root@teguhth-all reserve]#












No comments:
Post a Comment