25

次のような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
    ...
    ...
    ...

Pythonで簡単に使用できるように、これらのコマンドを使用してSQLite3データベースファイルを作成したいと思います。

Ubuntuでそれを行うにはどうすればよいですか?

4

2 に答える 2

51

これは完全な SQL ファイルではなく、SQLite が受け入れるものもあれば受け入れないものもある、MySQL 固有のものを多数含んでいます。一番上から始めましょう。

create databaseまたはuseSQLite を使用する必要はありません。データベースを作成する場合sqlite3は、コマンド ラインから実行するときに名前を付けるだけです。

$ sqlite3 db_name.sqlt < your_sql.sql

存在する場合db_name.sqltは使用され、存在しない場合は作成されます。create databaseuseは、実行方法によって暗示されますsqlite3。Python が見たいものに応じて、別の拡張子を使用する必要がある場合があります。

引用符のバッククォートは MySQLism であり、二重引用符は識別子の標準的な引用メカニズムです。幸いなことに、SQLite はそれらを受け入れるので、そのままにしておくことができます。

SQLite は何を意味するのかわかりません。SQLite がそれを受け入れる前にint(10) unsigned、を削除する必要があります。unsignedSQLite も意味がわからないENGINE=InnoDB DEFAULT CHARSET=utf8ので、それも削除する必要があります。

おそらく、MySQL は満足しているが SQLite は満足していない他のことに出くわすことになるでしょう。試して修正して、うまくいくまで試して修正する必要があります。または、データベース間で変換できるツールを見つけてみてください。私は常にこれらの種類のことを手作業または 1 回限りのスクリプトを使用して行っているため、役立つツールを知りません。

于 2012-12-22T19:29:26.347 に答える
1

基本的に、上記のコマンドは mysql またはその他のデータベース用です (これらのほとんどは、sqlite を使用するために微調整する必要があります。Sqlite はデータベースをファイルの形式で保存します。基本的に、sqlite を起動すると、ファイルが作成されます (存在しない場合)。入力してデータベースを作成または開くことができます

sqlite3 db

コマンドラインで。このステートメントは、「db」という名前のデータベースを作成または開きます

于 2012-12-22T19:36:48.347 に答える