1. sample data edb & mariadb
MySQL MariaDB
https://teguhth.blogspot.com/2019/04/study-kasus-praktis-belajar-query-mysql.html
MongoDB
https://teguhth.blogspot.com/2020/12/study-kasus-praktis-belajar-query.html
2. data server A & B
server A mongodb
ip : 10.10.10.9
db : teguhth
port 27017
user : admin
password : admin
server B Mariadb
ip : 10.10.10.90
db : teguhthedb
port 3306
user : admin
password : admin
buat script shell untuk migrasi dari server A postgres to server B
3. run script migrasi
sh migrasi_barang_mongo_to_mariadb.sh
sh migrasi_customer_mongo_to_mariadb.sh
sh migrasi_suplier_mongo_to_mariadb.sh
sh migrasi_pasok_mongo_to_mariadb.sh
sh migrasi_pembelian_mongo_to_mariadb.sh
[root@teguhth-all mongo]# pwd
/data/migrasi/mongo
[root@teguhth-all mongo]# sh migrasi_barang_mongo_to_mariadb.sh
== Prepare directory ==
== Export MongoDB ? CSV ==
2025-12-22T15:19:12.978+0700 connected to: mongodb://10.10.10.9:27017/
2025-12-22T15:19:12.981+0700 exported 6 records
== Import CSV ? MariaDB ==
? Migrasi barang selesai
[root@teguhth-all mongo]# sh migrasi_customer_mongo_to_mariadb.sh
== Prepare directory ==
== Export MongoDB ? CSV ==
2025-12-22T15:19:17.843+0700 connected to: mongodb://10.10.10.9:27017/
2025-12-22T15:19:17.846+0700 exported 6 records
== Import CSV ? MariaDB ==
? Migrasi customer selesai
[root@teguhth-all mongo]# sh migrasi_suplier_mongo_to_mariadb.sh
== Prepare directory ==
== Export MongoDB ? CSV ==
2025-12-22T15:19:21.059+0700 connected to: mongodb://10.10.10.9:27017/
2025-12-22T15:19:21.062+0700 exported 6 records
== Import CSV ? MariaDB ==
? Migrasi suplier selesai
[root@teguhth-all mongo]# sh migrasi_pasok_mongo_to_mariadb.sh
== Prepare directory ==
== Export MongoDB ? CSV ==
2025-12-22T15:19:25.214+0700 connected to: mongodb://10.10.10.9:27017/
2025-12-22T15:19:25.217+0700 exported 12 records
== Import CSV ? MariaDB ==
? Migrasi pasok selesai
[root@teguhth-all mongo]# sh migrasi_pembelian_mongo_to_mariadb.sh
== Prepare directory ==
== Export MongoDB ? CSV ==
2025-12-22T15:19:27.692+0700 connected to: mongodb://10.10.10.9:27017/
2025-12-22T15:19:27.695+0700 exported 15 records
== Import CSV ? MariaDB ==
? Migrasi pembelian selesai
[root@teguhth-all mongo]#
4. result after migrasi
5. script migrasi table barang
[root@teguhth-all mongo]# pwd
/data/migrasi/mongo
[root@teguhth-all mongo]# cat migrasi_barang_mongo_to_mariadb.sh
#!/bin/bash
########################################
# CONFIG
########################################
# MongoDB (Server A)
MONGO_HOST="10.10.10.9"
MONGO_PORT="27017"
MONGO_DB="teguhth"
MONGO_USER="admin"
MONGO_PASS="admin"
MONGO_COLLECTION="barang"
# MariaDB (Server B)
MARIA_HOST="10.10.10.90"
MARIA_PORT="3306"
MARIA_DB="mariamongo"
MARIA_USER="admin"
MARIA_PASS="admin"
MARIA_TABLE="barang"
# Temp file
WORKDIR="/data/migrasi/mongo/datatmp"
CSV_FILE="$WORKDIR/barang.csv"
########################################
# PREPARE
########################################
echo "== Prepare directory =="
mkdir -p "$WORKDIR"
rm -f "$CSV_FILE"
########################################
# EXPORT FROM MONGODB
########################################
echo "== Export MongoDB ? CSV =="
mongoexport \
--host "$MONGO_HOST" \
--port "$MONGO_PORT" \
-u "$MONGO_USER" \
-p "$MONGO_PASS" \
--authenticationDatabase admin \
-d "$MONGO_DB" \
-c "$MONGO_COLLECTION" \
--type=csv \
--fields KODE_BARANG,NAMA_BARANG,SATUAN_BARANG,STOK_BARANG \
--out "$CSV_FILE"
if [ $? -ne 0 ]; then
echo "? MongoDB export failed"
exit 1
fi
########################################
# IMPORT TO MARIADB
########################################
echo "== Import CSV ? MariaDB =="
mariadb --local-infile=1 \
-h "$MARIA_HOST" \
-P "$MARIA_PORT" \
-u "$MARIA_USER" \
-p"$MARIA_PASS" \
"$MARIA_DB" <<EOF
-- ? CREATE TABLE JIKA BELUM ADA
CREATE TABLE IF NOT EXISTS $MARIA_TABLE (
KODE_BARANG CHAR(6) NOT NULL,
NAMA_BARANG VARCHAR(25),
SATUAN_BARANG VARCHAR(20),
STOK_BARANG DECIMAL(4),
PRIMARY KEY (KODE_BARANG)
);
-- ? IMPORT DATA
LOAD DATA LOCAL INFILE '$CSV_FILE'
REPLACE INTO TABLE $MARIA_TABLE
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(KODE_BARANG, NAMA_BARANG, SATUAN_BARANG, STOK_BARANG);
EOF
if [ $? -ne 0 ]; then
echo "? MariaDB import failed"
exit 1
fi
########################################
# DONE
########################################
echo "? Migrasi barang selesai"
[root@teguhth-all mongo]#
6. script migrasi table suplier
[root@teguhth-all mongo]# pwd
/data/migrasi/mongo
[root@teguhth-all mongo]# cat migrasi_suplier_mongo_to_mariadb.sh
#!/bin/bash
########################################
# CONFIG
########################################
# MongoDB (Server A)
MONGO_HOST="10.10.10.9"
MONGO_PORT="27017"
MONGO_DB="teguhth"
MONGO_USER="admin"
MONGO_PASS="admin"
MONGO_COLLECTION="suplier"
# MariaDB (Server B)
MARIA_HOST="10.10.10.90"
MARIA_PORT="3306"
MARIA_DB="mariamongo"
MARIA_USER="admin"
MARIA_PASS="admin"
MARIA_TABLE="suplier"
# Temp file
WORKDIR="/data/migrasi/mongo/datatmp"
CSV_FILE="$WORKDIR/suplier.csv"
########################################
# PREPARE
########################################
echo "== Prepare directory =="
mkdir -p "$WORKDIR"
rm -f "$CSV_FILE"
########################################
# EXPORT FROM MONGODB
########################################
echo "== Export MongoDB ? CSV =="
mongoexport \
--host "$MONGO_HOST" \
--port "$MONGO_PORT" \
-u "$MONGO_USER" \
-p "$MONGO_PASS" \
--authenticationDatabase admin \
-d "$MONGO_DB" \
-c "$MONGO_COLLECTION" \
--type=csv \
--fields KODE_SUPLIER,NAMA_SUPLIER,ALAMAT_SUPLIER,KOTA_SUPLIER,TELEPON_SUPLIER \
--out "$CSV_FILE"
if [ $? -ne 0 ]; then
echo "? MongoDB export failed"
exit 1
fi
########################################
# IMPORT TO MARIADB
########################################
echo "== Import CSV ? MariaDB =="
mariadb --local-infile=1 \
-h "$MARIA_HOST" \
-P "$MARIA_PORT" \
-u "$MARIA_USER" \
-p"$MARIA_PASS" \
"$MARIA_DB" <<EOF
-- ? CREATE TABLE JIKA BELUM ADA
CREATE TABLE IF NOT EXISTS $MARIA_TABLE (
KODE_SUPLIER CHAR(5) NOT NULL,
NAMA_SUPLIER VARCHAR(30),
ALAMAT_SUPLIER VARCHAR(30),
KOTA_SUPLIER VARCHAR(15),
TELEPON_SUPLIER VARCHAR(15),
PRIMARY KEY (KODE_SUPLIER)
);
-- ? IMPORT DATA
LOAD DATA LOCAL INFILE '$CSV_FILE'
REPLACE INTO TABLE $MARIA_TABLE
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(
KODE_SUPLIER,
NAMA_SUPLIER,
ALAMAT_SUPLIER,
KOTA_SUPLIER,
TELEPON_SUPLIER
);
EOF
if [ $? -ne 0 ]; then
echo "? MariaDB import failed"
exit 1
fi
########################################
# DONE
########################################
echo "? Migrasi suplier selesai"
[root@teguhth-all mongo]#
7. script migrasi table customer
[root@teguhth-all mongo]# cat migrasi_customer_mongo_to_mariadb.sh
#!/bin/bash
########################################
# CONFIG
########################################
# MongoDB (Server A)
MONGO_HOST="10.10.10.9"
MONGO_PORT="27017"
MONGO_DB="teguhth"
MONGO_USER="admin"
MONGO_PASS="admin"
MONGO_COLLECTION="customer"
# MariaDB (Server B)
MARIA_HOST="10.10.10.90"
MARIA_PORT="3306"
MARIA_DB="mariamongo"
MARIA_USER="admin"
MARIA_PASS="admin"
MARIA_TABLE="customer"
# Temp file
WORKDIR="/data/migrasi/mongo/datatmp"
CSV_FILE="$WORKDIR/customer.csv"
########################################
# PREPARE
########################################
echo "== Prepare directory =="
mkdir -p "$WORKDIR"
rm -f "$CSV_FILE"
########################################
# EXPORT FROM MONGODB
########################################
echo "== Export MongoDB ? CSV =="
mongoexport \
--host "$MONGO_HOST" \
--port "$MONGO_PORT" \
-u "$MONGO_USER" \
-p "$MONGO_PASS" \
--authenticationDatabase admin \
-d "$MONGO_DB" \
-c "$MONGO_COLLECTION" \
--type=csv \
--fields KODE_CUSTOMER,NAMA_CUSTOMER,ALAMAT_CUSTOMER,KOTA_CUSTOMER,TELEPON_CUSTOMER \
--out "$CSV_FILE"
if [ $? -ne 0 ]; then
echo "? MongoDB export failed"
exit 1
fi
########################################
# IMPORT TO MARIADB
########################################
echo "== Import CSV ? MariaDB =="
mariadb --local-infile=1 \
-h "$MARIA_HOST" \
-P "$MARIA_PORT" \
-u "$MARIA_USER" \
-p"$MARIA_PASS" \
"$MARIA_DB" <<EOF
-- ? CREATE TABLE JIKA BELUM ADA
CREATE TABLE IF NOT EXISTS $MARIA_TABLE (
KODE_CUSTOMER CHAR(6) NOT NULL,
NAMA_CUSTOMER VARCHAR(30),
ALAMAT_CUSTOMER VARCHAR(30),
KOTA_CUSTOMER VARCHAR(15),
TELEPON_CUSTOMER VARCHAR(15),
PRIMARY KEY (KODE_CUSTOMER)
);
-- ? IMPORT DATA
LOAD DATA LOCAL INFILE '$CSV_FILE'
REPLACE INTO TABLE $MARIA_TABLE
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(
KODE_CUSTOMER,
NAMA_CUSTOMER,
ALAMAT_CUSTOMER,
KOTA_CUSTOMER,
TELEPON_CUSTOMER
);
EOF
if [ $? -ne 0 ]; then
echo "? MariaDB import failed"
exit 1
fi
########################################
# DONE
########################################
echo "? Migrasi customer selesai"
[root@teguhth-all mongo]#
8. script migrasi table pasok
[root@teguhth-all mongo]# pwd
/data/migrasi/mongo
[root@teguhth-all mongo]# cat migrasi_pasok_mongo_to_mariadb.sh
#!/bin/bash
########################################
# CONFIG
########################################
# MongoDB (Server A)
MONGO_HOST="10.10.10.9"
MONGO_PORT="27017"
MONGO_DB="teguhth"
MONGO_USER="admin"
MONGO_PASS="admin"
MONGO_COLLECTION="pasok"
# MariaDB (Server B)
MARIA_HOST="10.10.10.90"
MARIA_PORT="3306"
MARIA_DB="mariamongo"
MARIA_USER="admin"
MARIA_PASS="admin"
MARIA_TABLE="pasok"
# Temp file
WORKDIR="/data/migrasi/mongo/datatmp"
CSV_FILE="$WORKDIR/pasok.csv"
########################################
# PREPARE
########################################
echo "== Prepare directory =="
mkdir -p "$WORKDIR"
rm -f "$CSV_FILE"
########################################
# EXPORT FROM MONGODB
########################################
echo "== Export MongoDB ? CSV =="
mongoexport \
--host "$MONGO_HOST" \
--port "$MONGO_PORT" \
-u "$MONGO_USER" \
-p "$MONGO_PASS" \
--authenticationDatabase admin \
-d "$MONGO_DB" \
-c "$MONGO_COLLECTION" \
--type=csv \
--fields KODE_PASOK,KODE_BARANG,KODE_SUPLIER,TANGGAL_PASOK,JUMLAH_PASOK \
--out "$CSV_FILE"
if [ $? -ne 0 ]; then
echo "? MongoDB export failed"
exit 1
fi
########################################
# IMPORT TO MARIADB
########################################
echo "== Import CSV ? MariaDB =="
mariadb --local-infile=1 \
-h "$MARIA_HOST" \
-P "$MARIA_PORT" \
-u "$MARIA_USER" \
-p"$MARIA_PASS" \
"$MARIA_DB" <<EOF
-- ? CREATE TABLE JIKA BELUM ADA
CREATE TABLE IF NOT EXISTS pasok (
KODE_PASOK CHAR(10) NOT NULL,
KODE_BARANG CHAR(6) NOT NULL,
KODE_SUPLIER CHAR(5) NOT NULL,
TANGGAL_PASOK DATE,
JUMLAH_PASOK DECIMAL(4),
PRIMARY KEY (KODE_PASOK, KODE_BARANG, KODE_SUPLIER),
CONSTRAINT fk_pasok_barang
FOREIGN KEY (KODE_BARANG) REFERENCES barang(KODE_BARANG),
CONSTRAINT fk_pasok_suplier
FOREIGN KEY (KODE_SUPLIER) REFERENCES suplier(KODE_SUPLIER)
);
-- ?? Matikan FK check sementara
SET FOREIGN_KEY_CHECKS=0;
LOAD DATA LOCAL INFILE '$CSV_FILE'
REPLACE INTO TABLE pasok
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(
KODE_PASOK,
KODE_BARANG,
KODE_SUPLIER,
@TANGGAL_PASOK,
JUMLAH_PASOK
)
SET TANGGAL_PASOK = STR_TO_DATE(@TANGGAL_PASOK, '%e-%b-%y');
SET FOREIGN_KEY_CHECKS=1;
EOF
if [ $? -ne 0 ]; then
echo "? MariaDB import failed"
exit 1
fi
########################################
# DONE
########################################
echo "? Migrasi pasok selesai"
[root@teguhth-all mongo]#
9. script migrasi table pembelian
[root@teguhth-all mongo]# pwd
/data/migrasi/mongo
[root@teguhth-all mongo]# cat migrasi_pembelian_mongo_to_mariadb.sh
#!/bin/bash
########################################
# CONFIG
########################################
# MongoDB (Server A)
MONGO_HOST="10.10.10.9"
MONGO_PORT="27017"
MONGO_DB="teguhth"
MONGO_USER="admin"
MONGO_PASS="admin"
MONGO_COLLECTION="pembelian"
# MariaDB (Server B)
MARIA_HOST="10.10.10.90"
MARIA_PORT="3306"
MARIA_DB="mariamongo"
MARIA_USER="admin"
MARIA_PASS="admin"
MARIA_TABLE="pembelian"
# Temp file
WORKDIR="/data/migrasi/mongo/datatmp"
CSV_FILE="$WORKDIR/pembelian.csv"
########################################
# PREPARE
########################################
echo "== Prepare directory =="
mkdir -p "$WORKDIR"
rm -f "$CSV_FILE"
########################################
# EXPORT FROM MONGODB
########################################
echo "== Export MongoDB ? CSV =="
mongoexport \
--host "$MONGO_HOST" \
--port "$MONGO_PORT" \
-u "$MONGO_USER" \
-p "$MONGO_PASS" \
--authenticationDatabase admin \
-d "$MONGO_DB" \
-c "$MONGO_COLLECTION" \
--type=csv \
--fields KODE_PEMBELIAN,KODE_BARANG,KODE_CUSTOMER,TANGGAL_PEMBELIAN,JUMLAH_PEMBELIAN \
--out "$CSV_FILE"
if [ $? -ne 0 ]; then
echo "? MongoDB export failed"
exit 1
fi
########################################
# IMPORT TO MARIADB
########################################
echo "== Import CSV ? MariaDB =="
mariadb --local-infile=1 \
-h "$MARIA_HOST" \
-P "$MARIA_PORT" \
-u "$MARIA_USER" \
-p"$MARIA_PASS" \
"$MARIA_DB" <<EOF
-- ?? Pastikan parent table sudah ada
-- barang(KODE_BARANG)
-- customer(KODE_CUSTOMER)
-- ? CREATE TABLE JIKA BELUM ADA
CREATE TABLE IF NOT EXISTS pembelian (
KODE_PEMBELIAN CHAR(10) NOT NULL,
KODE_BARANG CHAR(6) NOT NULL,
KODE_CUSTOMER CHAR(6) NOT NULL,
TANGGAL_PEMBELIAN DATE,
JUMLAH_PEMBELIAN DECIMAL(4),
PRIMARY KEY (KODE_PEMBELIAN, KODE_BARANG, KODE_CUSTOMER),
CONSTRAINT fk_pembelian_barang
FOREIGN KEY (KODE_BARANG) REFERENCES barang(KODE_BARANG),
CONSTRAINT fk_pembelian_customer
FOREIGN KEY (KODE_CUSTOMER) REFERENCES customer(KODE_CUSTOMER)
);
-- ?? Matikan FK sementara
SET FOREIGN_KEY_CHECKS=0;
-- ? LOAD DATA + konversi tanggal
LOAD DATA LOCAL INFILE '$CSV_FILE'
REPLACE INTO TABLE pembelian
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(
KODE_PEMBELIAN,
KODE_BARANG,
KODE_CUSTOMER,
@TANGGAL_PEMBELIAN,
JUMLAH_PEMBELIAN
)
SET TANGGAL_PEMBELIAN = STR_TO_DATE(@TANGGAL_PEMBELIAN, '%e-%b-%y');
SET FOREIGN_KEY_CHECKS=1;
EOF
if [ $? -ne 0 ]; then
echo "? MariaDB import failed"
exit 1
fi
########################################
# DONE
########################################
echo "? Migrasi pembelian selesai"
[root@teguhth-all mongo]#




No comments:
Post a Comment