2008-10-02 43 views

Trả lời

19

SQLite không có tùy chọn .dump để chạy ở dòng lệnh. Mặc dù tôi thích sử dụng ứng dụng SQLite Database Browser để quản lý cơ sở dữ liệu SQLite. Bạn có thể xuất cấu trúc và nội dung thành tệp .sql có thể đọc được bằng bất kỳ thứ gì. Tệp> Xuất> Cơ sở dữ liệu sang tệp SQL.

+1

Tệp đã xuất không cần chỉnh sửa một số cú pháp khác nhau nhưng không quá phức tạp. Cảm ơn –

+1

Về mặt kỹ thuật, trình bao SQLite không phải là SQLite mà là một ứng dụng giao diện điều khiển được liên kết với SQLite mà chỉ là một thư viện. – Benoit

+1

Điều này đã chỉ cho tôi đúng hướng, nhưng tôi đang tìm cú pháp, vì vậy tôi sẽ đưa nó vào đây: 'sqlite3 my_db.db -batch" .dump "> my_db.sql' –

6

Lệnh SQLite .dump sẽ xuất toàn bộ nội dung của cơ sở dữ liệu dưới dạng tệp văn bản ASCII. Tệp này ở định dạng SQL chuẩn, vì vậy nó có thể được nhập vào bất kỳ cơ sở dữ liệu SQL nào. Thông tin chi tiết trên trang này: sqlite3

3

sqlite-manager, firefox add-on: cho phép bạn xuất một cơ sở dữ liệu SQLite trong một kịch bản SQL.

Cơ sở dữ liệu> Cơ sở dữ liệu Export> Export để nộp

(Correction firefox 35 bugg buộc phải sửa mã phần mở rộng như chỉ để trang web sau đây: How to fix your optional sqlite manager module to work)

dòng lệnh:

sqlite3 DB_name .dump > DB_name.sql 

xuất cơ sở dữ liệu sqlite trong tập lệnh SQL.

Từ url: http://doc.ubuntu-fr.org/sqlite.

+0

câu trả lời xuất sắc @ AlbanMar31. Nó hoạt động tốt. –

+0

phần bổ sung dường như đã chết ngay bây giờ, phiên bản firefox 57.0 cho thấy nó không tương thích và không sử dụng được ... –

0

tôi sử dụng SQLite-manager, firefox add-on nhưng Fk không hoạt động trong máy chủ sql tôi phải thay đổi kịch bản từng người một tôi có hơn 100 bảng với nhiều FK .. là có một công việc mới xung quanh cảm ơn

7

Tôi biết rằng đây là chủ đề cũ, nhưng tôi nghĩ rằng giải pháp này cũng nên ở đây.

  • Cài đặt trình điều khiển ODBC cho SQLite
  • Run odbcad32 cho x64 hoặc C: \ Windows \ SysWOW64 \ odbcad32.exe cho x86
  • Tạo HỆ THỐNG DSN, nơi bạn chọn SQLite3 ODBC driver
  • Sau đó, bạn điền lên hình thức nơi Database Name là filepath cơ sở dữ liệu SQLite

Sau đó, trong SQL server chạy theo sysadmin

USE [master] 
GO 
EXEC sp_addlinkedserver 
    @server  = 'OldSQLite', -- connection name 
    @srvproduct = '',   -- Can be blank but not NULL 
    @provider = 'MSDASQL', 
    @datasrc = 'SQLiteDNSName' -- name of the system DSN connection 
GO 

Sau đó, bạn có thể chạy truy vấn của mình với tư cách người dùng bình thường ví dụ:

SELECT * INTO SQLServerDATA FROM openquery(SQLiteDNSName, 'select * from SQLiteData') 

hoặc bạn có thể sử dụng thứ gì đó như this cho các bảng lớn hơn.

+0

SELECT * INTO SQLServerDATA FROM openquery (OldSQLite, 'select * from SQLiteData') ---------- --------- Và bạn có thể cài đặt trình điều khiển cho 64 bit và tạo ODBC cho 64 bit (odbcad32 trong thư mục system32 - Trình điều khiển ODBC SQLite3) –

0

Một ý tưởng là làm một số việc như sau: - Xem squema trong sql lite và nhận lệnh CREATE TABLE. - Thực thi, phân tích cú pháp sql, trong SQL SERVER - Dữ liệu du lịch tạo ra một chỉ số INSERT cho mỗi hàng. (phân tích cú pháp sql quá)

Mã này là phiên bản beta, vì không có loại dữ liệu phát hiện và không sử dụng @parameter và đối tượng lệnh, nhưng chạy.

(Bạn cần chèn tài liệu tham khảo và cài đặt System.Data.SQLite;)

C#: Chèn mã này (hoặc neccesari) trong đầu cs

using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

using System.Data.SqlClient;

using System.Data.SQLite;

using System.Threading;

sử dụng System.Text.RegularExpressions;

bằng System.IO;

sử dụng log4net;

using System.Net;

public static Boolean SqLite2SqlServer(string sqlitePath, string connStringSqlServer) 
    { 
     String SqlInsert; 
     int i; 
     try 
     { 

      string sql = "select * from sqlite_master where type = 'table' and name like 'YouTable in SQL'"; 
      string password = null; 
      string sql2run; 
      string tabla; 
      string sqliteConnString = CreateSQLiteConnectionString(sqlitePath, password); 
      //sqliteConnString = "data source=C:\\pro\\testconverter\\Origen\\FACTUNETWEB.DB;page size=4096;useutf16encoding=True"; 

      using (SQLiteConnection sqconn = new SQLiteConnection(sqliteConnString)) 
      { 



       sqconn.Open(); 

       SQLiteCommand command = new SQLiteCommand(sql, sqconn); 
       SQLiteDataReader reader = command.ExecuteReader(); 

       SqlConnection conn = new SqlConnection(connStringSqlServer); 
       conn.Open(); 
       while (reader.Read()) 
       { 
        //Console.WriteLine("Name: " + reader["name"] + "\tScore: " + reader["score"]); 
        sql2run = "" + reader["sql"]; 
        tabla = "" + reader["name"]; 

        /* 
        sql2run = "Drop table " + tabla; 
        SqlCommand cmd = new SqlCommand(sql2run, conn);      
        cmd.ExecuteNonQuery(); 
        */ 



        sql2run = sql2run.Replace("COLLATE NOCASE", ""); 
        sql2run = sql2run.Replace(" NUM", " TEXT"); 
        SqlCommand cmd2 = new SqlCommand(sql2run, conn); 
        cmd2.ExecuteNonQuery(); 


        // insertar los datos. 
        string sqlCmd = "Select * From " + tabla; 
        SQLiteCommand cmd = new SQLiteCommand(sqlCmd, sqconn); 
        SQLiteDataReader rs = cmd.ExecuteReader(); 
        String valor = ""; 
        String Valores = ""; 
        String Campos = ""; 
        String Campo = ""; 
        while (rs.Read()) 
        { 
         SqlInsert = "INSERT INTO " + tabla; 
         Campos = ""; 
         Valores = ""; 
         for (i = 0; i < rs.FieldCount ; i++) 
         { 

          //valor = "" + rs.GetString(i); 
          //valor = "" + rs.GetName(i); 
          Campo = "" + rs.GetName(i); 
          valor = "" + rs.GetValue(i); 

          if (Valores != "") 
          { 
           Valores = Valores + ','; 
           Campos = Campos + ','; 
          } 
          Valores = Valores + "'" + valor + "'"; 
          Campos = Campos + Campo; 
         } 
         SqlInsert = SqlInsert + "(" + Campos + ") Values (" + Valores + ")"; 
         SqlCommand cmdInsert = new SqlCommand(SqlInsert, conn); 
         cmdInsert.ExecuteNonQuery(); 


        } 


       } 

       } 
      return true; 
     } //END TRY 
     catch (Exception ex) 
     { 
      _log.Error("unexpected exception", ex); 

      throw; 

     } // catch 
    } 
Các vấn đề liên quan