Tuesday, December 23, 2025

.::: create Tools Migration from MariaDB to MongoDB using bash shell script :::.

 
 
 

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

Popular Posts