programing

데이터베이스 mysql에서 mongoDb로 변환

sourcetip 2022. 10. 18. 22:46
반응형

데이터베이스 mysql에서 mongoDb로 변환

데이터베이스를 mysql에서 mongoDB로 쉽게 변경할 수 있는 방법이 있나요?

아니면 좋은 튜토리얼을 추천하는 사람이 있으면 하세요.

데이터베이스를 mysql에서 mongoDB로 쉽게 변경할 수 있는 방법이 있나요?

방법 #1: MySQL에서 CSV 형식으로 내보낸 후 mongo Import 도구를 사용합니다.그러나 이 방법이 이진 데이터의 날짜 처리 측면에서 항상 잘 작동하는 것은 아닙니다.

방법 2: 선택한 언어로 전송을 스크립팅합니다.기본적으로 MySQL에서 한 번에 한 요소씩 읽는 프로그램을 작성하여 MongoDB에 삽입합니다.

방법 #2는 #1보다 낫지만 여전히 충분하지 않습니다.

MongoDB는 테이블 대신 컬렉션을 사용합니다.MongoDB는 조인을 지원하지 않습니다.제가 본 모든 데이터베이스에서, 이것은 MongoDB의 당신의 데이터 구조가 MySQL의 구조와 다르다는 것을 의미합니다.

따라서 SQL을 MongoDB로 이식하기 위한 "범용 도구"는 없습니다.데이터가 MongoDB에 도달하기 전에 변환해야 합니다.

Ruby 를 사용하고 있는 경우는, Mongify 를 사용해 주세요.

데이터를 RDBS에서 MongoDB로 쉽게 변환할 수 있습니다.

Mongify는 mysql 데이터베이스를 읽고 번역 파일을 작성합니다.데이터 변환 방법을 매핑하기만 하면 됩니다.

지원 대상:

  • ID 자동 갱신(BSON 오브젝트로)아이디)
  • 참조 ID 업데이트 중
  • 유형 주조 값
  • 다른 문서에 표 삽입
  • 필터를 저장하기 전에(데이터를 수동으로 변경할 수 있도록 하기 위해)
  • 그리고 훨씬 더...

자세한 것은, http://mongify.com/getting_started.html 를 참조해 주세요.

또한 홈페이지에는 얼마나 쉬운지 보여주는 짧은 5분짜리 비디오가 있다.

이 목적을 위해 Node.js를 사용한 것은 다음과 같습니다.

var mysql = require('mysql');
var MongoClient = require('mongodb').MongoClient;

function getMysqlTables(mysqlConnection, callback) {
    mysqlConnection.query("show full tables where Table_Type = 'BASE TABLE';", function(error, results, fields) {
        if (error) {
            callback(error);
        } else {
            var tables = [];
            results.forEach(function (row) {
                for (var key in row) {
                    if (row.hasOwnProperty(key)) {
                        if(key.startsWith('Tables_in')) {
                            tables.push(row[key]);
                        }
                    }
                }
            });
            callback(null, tables);
        }
    });

}

function tableToCollection(mysqlConnection, tableName, mongoCollection, callback) {
    var sql = 'SELECT * FROM ' + tableName + ';';
    mysqlConnection.query(sql, function (error, results, fields) {
        if (error) {
            callback(error);
        } else {
            if (results.length > 0) {
                mongoCollection.insertMany(results, {}, function (error) {
                    if (error) {
                        callback(error);
                    } else {
                        callback(null);
                    }
                });
            } else {
                callback(null);
            }
        }
    });
}

MongoClient.connect("mongodb://localhost:27017/importedDb", function (error, db) {
    if (error) throw error;

    var MysqlCon = mysql.createConnection({
        host: 'localhost',
        user: 'root',
        password: 'root',
        port: 8889,
        database: 'dbToExport'
    });

    MysqlCon.connect();

    var jobs = 0;

    getMysqlTables(MysqlCon, function(error, tables) {
        tables.forEach(function(table) {
            var collection = db.collection(table);
            ++jobs;
            tableToCollection(MysqlCon, table, collection, function(error) {
                if (error) throw error;
                --jobs;
            });
        })
    });

    // Waiting for all jobs to complete before closing databases connections.
    var interval = setInterval(function() {
        if(jobs<=0) {
            clearInterval(interval);
            console.log('done!');
            db.close();
            MysqlCon.end();
        }
    }, 300);
});

MongoVUE의 무료 버전은 자동으로 이를 수행할 수 있습니다.

두 데이터베이스에 모두 연결하여 가져오기를 수행할 수 있습니다.

가장 쉬운 방법 중 하나는 MySQL 데이터베이스를 JSON으로 내보낸 후 mongorestore를 사용하여 MongoDB 데이터베이스로 Import하는 것이라고 생각합니다.

순서 1: MySQL 데이터베이스를 JSON으로 내보내기

필요에 따라 mysql 덤프 파일을 MySQL 데이터베이스에 로드합니다.

MySQL Workbench를 열고 MySQL 데이터베이스에 연결합니다.

[ Schema viewer ]> [ Select database ]> [ Tables ]> 내보낼 테이블의 이름을 오른쪽 클릭합니다.

'테이블 데이터 내보내기 마법사'를 선택합니다.

파일 형식을 .json으로 설정하고 tablename.json 등의 파일 이름을 입력합니다.

주의: 모든 테이블을 개별적으로 내보내야 합니다.

순서 2: mongorestore 명령을 사용하여 JSON 파일을 MongoDB로 Import합니다.

mongorestore 명령어는 mongo 셸이 아닌 서버 명령줄에서 실행해야 합니다.

인증 세부 정보와 --jsonArray 옵션을 제공해야 할 수 있습니다. 자세한 내용은 mongorestore 문서를 참조하십시오.

mongoimport -d dbname -u ${MONGO_USERNAME} -p ${MONGO_PASSWORD} --authenticationDatabase admin -c collectionname --jsonArray --file tablename.json

참고: 원래 MySQL 데이터베이스에 BLOB/바이너리 데이터가 있는 경우 이 메서드는 작동하지 않습니다.

저는 그런 이행 작업에 Talend Open Studio를 좋아합니다.시각적인 방법으로 데이터 이행 「스크립트」를 작성하는 이클립스 베이스의 솔루션입니다.나는 비주얼 프로그래밍을 좋아하지 않지만, 이것은 내가 예외로 하는 문제 영역이다.

Adrien Mogenet은 mongodb용 MongoDBC Connection 플러그인을 만들었습니다.

단순한 이행으로는 과잉일 가능성이 높지만 ut는 뛰어난 툴입니다.

단, Nix의 제안으로 이행의 1회성이라면 시간을 절약할 수 있을 것입니다.

여기에는 QCubed(http://qcu.be) 프레임워크를 사용할 수 있습니다.순서는 다음과 같습니다.

  1. QCubed 설치(http://www.thetrozone.com/qcubed-installation)
  2. 데이터베이스에서 codegen을 수행합니다.(http://www.thetrozone.com/php-code-generation-qcubed-eliminating-sql-hassle)
  3. 한 번에 하나의 작업만 실행되도록 데이터베이스를 다른 세계에서 오프라인으로 전환합니다.
  4. 이제 데이터베이스의 모든 테이블에서 모든 행을 읽고 모든 개체에 getJson을 사용하여 json을 가져오는 스크립트를 작성합니다.그런 다음 데이터를 사용하여 어레이로 변환하고 mongoDB에 푸시할 수 있습니다.

아직도 해결책을 찾고 있는 사람이 있다면, 가장 쉬운 방법은 SQL DB에 접속하기 위한 PHP 스크립트를 작성하고, 일반적인 Select 문을 사용하여 원하는 정보를 가져오고, PHP JSON Encode 함수를 사용하여 정보를 JSON으로 변환하고, 결과를 파일에 출력하거나 MongoDB에 직접 출력하는 것입니다.이 방법은 매우 간단하고 간단합니다. 출력을 Json Validator에 대해 다시 확인하는 것만이 유일한 방법입니다. Json Validator를 유효하게 하기 위해 특정 문자 및 기호를 대체하기 위해 폭발 등의 기능을 사용해야 할 수도 있습니다.이전에 이 작업을 한 적이 있습니다만, 현재 수중에 스크립트가 없습니다만, 제가 기억하는 바로는, 말 그대로 반쪽의 코드로 되어 있었습니다.

오, 또한 Mongo는 문서 저장소이기 때문에 Mongo에서 허용되려면 데이터 매핑이 필요합니다.

같은 문제로 오시는 분들은 이 Github 프로젝트를 확인하시면 됩니다.이는 간단한 명령어를 실행하는 것만으로 MySQL 데이터베이스에서 MongoDB로 데이터를 이행할 수 있도록 지원하는 지속적인 개발입니다.

TypeScript에서 MongoDB 스키마를 생성하여 나중에 프로젝트에서 사용할 수 있습니다.각 MySQL 테이블은 MongoDB 컬렉션이 되며 데이터 타입은 MongoDB 호환으로 효율적으로 변환됩니다.

이에 대한 설명서는 프로젝트의 README.md에서 찾을 수 있습니다.얼마든지 들어와서 기부를 하세요.필요하다면 돕고 싶다.

만약 당신이 그것을 해줄 도구를 찾고 있다면, 행운을 빌어요.

제가 제안하는 것은 당신이 선택한 언어를 선택하고, 한 언어에서 읽고 다른 언어에게 쓰라는 것입니다.

Matt Briggs의 말을 인용할 수 있다면 (그것은 나의 문제를 한 번 해결했다)

운전자는 단연코 가장 직진합니다.Import/export 툴은 훌륭하지만 쌍으로 사용하는 경우에만 사용할 수 있습니다.테이블에 날짜가 포함되어 있고 DB에서 내보내서 mongo로 가져오려고 하면 난리입니다.

너도 운이 좋아 c#에 있어.루비를 사용하고 있으며, 몽고로 이행한 3200만 개의 테이블이 있습니다.우리의 최종 솔루션은 postgres에서 json을 출력하는 미친 SQL 문을 만들고(날짜를 올바르게 진행하기 위한 매우 촌스러운 것들을 포함), 명령어라인의 쿼리 출력을 mongoimport로 연결하는 것이었습니다.글을 쓰는데 엄청난 좌절감이 들었고, 정말 바꿀 수 있는 것은 아닙니다.

따라서 이 문제를 해결할 수 있다면 ado.net를 mongo 드라이버와 함께 사용하십시오.그렇지 않다면 잘 부탁드립니다:-)

(이것은 완전한 mongo fanboi에서 나온 것입니다.)

MySQL은 다른 SQL 데이터베이스와 매우 유사하기 때문에 topiich로 보냅니다.SQL 테이블을 mongoDB 문서로 변환

다음 프로젝트를 사용할 수 있습니다.설정 파일 같은 것을 쓰려면 , solr가 필요합니다.매우 간단하고 간단합니다.

http://code.google.com/p/sql-to-mongo-importer/

이것을 시험해 보세요.간단한 r2n 매핑을 사용하여 MySQL 덤프를 Mongo 업데이트로 자동 변환합니다.https://github.com/virtimus/mysql2mongo

언급URL : https://stackoverflow.com/questions/6251548/converting-database-from-mysql-to-mongodb

반응형