Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách dễ dàng nhanh chóng để di chuyển SQLite3 sang MySQL?

Mọi người dường như bắt đầu với một vài biểu thức greps và perl và bạn sắp có được thứ gì đó phù hợp với tập dữ liệu cụ thể của mình nhưng bạn không biết liệu nó có được nhập dữ liệu chính xác hay không. Tôi thực sự ngạc nhiên là không ai xây dựng một thư viện vững chắc có thể chuyển đổi giữa hai thứ này.

Dưới đây là danh sách TẤT CẢ sự khác biệt về cú pháp SQL mà tôi biết giữa hai định dạng tệp:Các dòng bắt đầu bằng:

  • BẮT ĐẦU GIAO DỊCH
  • CAM KẾT
  • sqlite_sequence
  • TẠO CHỈ SỐ DUY NHẤT

không được sử dụng trong MySQL

  • SQLite sử dụng CREATE TABLE/INSERT INTO "table_name" và MySQL sử dụng CREATE TABLE/INSERT INTO table_name
  • MySQL không sử dụng dấu ngoặc kép bên trong định nghĩa lược đồ
  • MySQL sử dụng dấu ngoặc kép cho các chuỗi bên trong INSERT INTO mệnh đề
  • SQLite và MySQL có các cách khác nhau để thoát các chuỗi bên trong INSERT INTO mệnh đề
  • SQLite sử dụng 't''f' đối với boolean, MySQL sử dụng 10 (một regex đơn giản cho việc này có thể không thành công khi bạn có một chuỗi như:'I do, you don't' bên trong INSERT INTO của bạn )
  • SQLLite sử dụng AUTOINCREMENT , MySQL sử dụng AUTO_INCREMENT

Đây là một tập lệnh perl được hack rất cơ bản hoạt động cho my tập dữ liệu và kiểm tra nhiều điều kiện khác mà các tập lệnh perl khác mà tôi tìm thấy trên web. Nu đảm bảo rằng nó sẽ hoạt động với dữ liệu của bạn nhưng vui lòng sửa đổi và đăng lại tại đây.

#! /usr/bin/perl

while ($line = <>){
    if (($line !~  /BEGIN TRANSACTION/) && ($line !~ /COMMIT/) && ($line !~ /sqlite_sequence/) && ($line !~ /CREATE UNIQUE INDEX/)){
        
        if ($line =~ /CREATE TABLE \"([a-z_]*)\"(.*)/i){
            $name = $1;
            $sub = $2;
            $sub =~ s/\"//g;
            $line = "DROP TABLE IF EXISTS $name;\nCREATE TABLE IF NOT EXISTS $name$sub\n";
        }
        elsif ($line =~ /INSERT INTO \"([a-z_]*)\"(.*)/i){
            $line = "INSERT INTO $1$2\n";
            $line =~ s/\"/\\\"/g;
            $line =~ s/\"/\'/g;
        }else{
            $line =~ s/\'\'/\\\'/g;
        }
        $line =~ s/([^\\'])\'t\'(.)/$1THIS_IS_TRUE$2/g;
        $line =~ s/THIS_IS_TRUE/1/g;
        $line =~ s/([^\\'])\'f\'(.)/$1THIS_IS_FALSE$2/g;
        $line =~ s/THIS_IS_FALSE/0/g;
        $line =~ s/AUTOINCREMENT/AUTO_INCREMENT/g;
        print $line;
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để trích xuất từ ​​thứ n và đếm số lần xuất hiện của từ trong một chuỗi MySQL?

  2. Làm cách nào để bạn kết nối với nhiều cơ sở dữ liệu MySQL trên một trang web?

  3. Làm cách nào để sử dụng xóa thác trong mysql?

  4. Cách xóa các ký tự đứng đầu và theo sau trong MySQL

  5. Xóa bộ đệm truy vấn MySQL mà không cần khởi động lại máy chủ