2012-12-22 7 views
17

Mam plik, który zawiera kilka poleceń SQL, coś, co wygląda tak:Jak utworzyć plik bazy danych SQLite3 za pomocą pliku polecenia SQL?

CREATE DATABASE IF NOT EXISTS `db_name`; 
USE `db_name`; 

CREATE TABLE IF NOT EXISTS `customers` (
    `id` int(10) unsigned NOT NULL, 
    `f_name` varchar(50) DEFAULT NULL, 
    `l_name` varchar(50) DEFAULT NULL, 
    `company_name` varchar(200) DEFAULT NULL, 
    `email` varchar(50) DEFAULT NULL, 
    `phone` varchar(25) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

INSERT INTO `customers` (`id`, `f_name`, `l_name`, `company_name`, `email`, `phone`) VALUES 
    ... 
    ... 
    ... 

chciałbym używać tych poleceń, aby utworzyć plik bazy danych SQLite3 w celu wykorzystania go łatwo z Pythona.

Jak to zrobić w systemie Ubuntu?

Odpowiedz

36

To nie jest całkiem plik SQL, który zawiera kilka specyficznych dla MySQL rzeczy, z których część SQLite zaakceptuje, a niektóre nie. Zaczniemy od początku.

Nie potrzebujesz create database lub use z SQLite. Jeśli chcesz, aby utworzyć bazę danych po prostu nazwać po uruchomieniu sqlite3 z wiersza poleceń:

$ sqlite3 db_name.sqlt < your_sql.sql 

jeśli db_name.sqlt istnieje wtedy będzie on używany, jeśli nie istnieje zostanie on utworzony. Tak więc create database i use są implikowane przez sposób uruchamiania sqlite3. W zależności od tego, co Python chce zobaczyć, może być konieczne użycie innego rozszerzenia.

Cofnięcia do cytowania to MySQLism, podwójne cytaty są standardowym mechanizmem cytowania dla identyfikatorów. Na szczęście dla ciebie, SQLite zaakceptuje je, więc możesz zostawić je w spokoju.

SQLite nie wie, co oznacza int(10) unsigned, musisz usunąć unsigned, zanim SQLite to zaakceptuje. SQLite również nie będzie wiedział, co oznacza ENGINE=InnoDB DEFAULT CHARSET=utf8, więc będziesz musiał to również usunąć.

Prawdopodobnie napotkasz inne rzeczy, z których MySQL jest zadowolony, ale SQLite nie jest. Musisz go wypróbować i naprawić, wypróbować i naprawić, dopóki nie zadziała. Lub spróbuj znaleźć narzędzie, które można przetłumaczyć między bazami danych, zawsze robię te rzeczy ręcznie lub używając jednorazowych skryptów, więc nie znam żadnych narzędzi, które mogą ci pomóc.

+0

po instrukcji, otrzymuję następujący: błąd: w pobliżu linii 1: w pobliżu "INSERT": błąd składni. Zabawne, nie ma "INSERT" w pobliżu linii 1 ... – user1639431

+0

Powiedzmy, że chcę używać MySQL zamiast Sqlit e3. Jak wykonać te polecenia? @ mu-is-too-short – user1639431

+0

Co to jest cały komunikat o błędzie? To, że narzeka na pierwszą linię, nie oznacza, że ​​jest wierszem jednego z plików. Jeśli chciałbyś użyć MySQL, to wysyłasz te pliki do 'mysql'. –

0

Zasadniczo powyższe polecenia są dla mysql lub innej bazy danych (większość z nich musi zostać zmodyfikowana, aby móc pracować z sqlite. Sqlite przechowuje bazę danych w formie pliku. Zasadniczo po uruchomieniu sqlite utworzy plik (jeśli nie .. obecnie) można utworzyć lub otworzyć bazę danych wpisując

sqlite3 db 

na linii poleceń To oświadczenie utworzyć lub otworzyć bazy danych o nazwie „db”

Powiązane problemy