2

私のアプリケーションでは、csv ファイルから sqlite データベースにデータをインポートする必要があります。

sqlite で作業するには、使いやすいので FMDB ライブラリを使用します:)

csvファイルからテーブルにデータをインポートする方法を教えてください。

csv ファイルのテーブルに対応するテーブルを作成したので、簡単にインポートできます。

インターネット上のソリューションを調べたところ、次のような sqlite のターミナル コマンドが見つかりました。

".mode csv"
".separator ';'"
".import mycsvfile.csv mytablename"

しかし、FMDB でこの SQL ステートメントを実行しようとすると、失敗します..

私のソースコード:

   [db beginTransaction];
   NSString *query1 = @".mode csv";
   NSString *query2 = @".separator ';'";
   NSString *query3 = @".import mycsvfile.csv mytablename";

   BOOL result = [db executeUpdate:query];
   result = [db executeQuery:query2];
   result = [db executeQuery:query3];

   [db commit];

ここで BOOL をステップオーバーした後、 result = [db executeUpdate:query]; result は FALSE に等しく、エラーであることを示します。

FMDB でログを有効にした後、クエリで「構文が正しくありません」と表示されます。

しかし、なぜこのステートメントは OS X の sqlite で機能するのでしょうか?

注: OS X ターミナルの sqlite3 でこのコマンドを実行しようとすると、すべて正常に動作します。

4

1 に答える 1

3

使用している .import コマンドは、SQLite 自体の一部ではなく、SQLite CLI (コマンド ライン インターフェイス) シェルの一部です。このツールのドキュメントはこちらです。CLI ツールのソース コード (ファイルは shell.c だと思います) は、sqlite.org から SQLite ディストリビューションの一部としてダウンロードできます。

iOS アプリの CSV データを SQLite にインポートする場合は、SQLite データベースのテーブルにデータを挿入するだけでなく、CSV ファイルを自分で手動で解析する必要があります。

于 2014-05-01T18:45:00.087 に答える