0

バーニーの要求で、私はこれをより単純な例に凝縮しようとしています:

曜日が列ヘッダーである月を含むCSVファイルがあります。

Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
1,2,3,4,5,6,7
8,9,10,11,12,13,14
15,16,17,18,19,20,21
22,23,24,25,26,27,28

コマンドラインで、SQLiteテーブルを作成しました。

sqlite> CREATE TABLE days(
   ...> Monday int,
   ...> Tuesday int,
   ...> Wednesday int,
   ...> Thursday int,
   ...> Friday int,
   ...> Saturday int,
   ...> Sunday int
   ...> );

csvからデータをインポートしようとすると、次のようになります。

sqlite> .import example.csv days
Error: example.csv line 1: expected 7 columns of data but found 1

このcsvファイルをデータベースにインポートして、新しい行をすべて認識できるようにするにはどうすればよいですか?ありがとう!

4

3 に答える 3

1

.import コマンドを実行する前に、次の行を含める必要があります。

.separator ,

これにより、インポート コマンドは区切り記号 (この場合はコンマ) を探すようになります。

sqlite コマンド ライン コマンドの詳細については、http ://www.sqlite.org/sqlite.html を参照してください。

于 2013-07-14T16:43:47.563 に答える
0

termsql をチェックしてください。これは、このような目的のために作成されたツールです。あなたの仕事はそれで非常に簡単になります。

マニュアル: http://tobimensch.github.io/termsql/

ページの下部にある例を確認してください。そこにはCSVインポート用のものがあり、さまざまなオプションが何であるかも確認してください。

プロジェクト: https://github.com/tobimensch/termsql

于 2014-12-03T01:38:01.277 に答える
0

SQLite シェルはかなり洗練されています。現在のバージョンは行ヘッダーを実行せず、その動作は標準 (RFC 4180) と一般的な慣行の間で異なります。次の 3.8 リリースでは、行ヘッダーが行われます。

Python を使用しているため、APSW シェルが役立つ場合があります (開示: 私は作成者です)。SQLite シェルと同じようにコマンド ラインから使用できます。また、独自のコマンドを追加するなど、プログラムで使用することもできます。

注目すべきは、ヘッダー、セパレーター、データ型などを含むすべてを把握する自動インポート コマンドがあることです。

sqlite> .help autoimport

.autoimport FILENAME ?TABLE?  Imports filename creating a table and
                              automatically working out separators and data
                              types (alternative to .import command)

The import command requires that you precisely pre-setup the table and schema,
and set the data separators (eg commas or tabs).  In many cases this information
can be automatically deduced from the file contents which is what this command
does.  There must be at least two columns and two rows.

If the table is not specified then the basename of the file will be used.

Additionally the type of the contents of each column is also deduced - for
example if it is a number or date.  Empty values are turned into nulls.  Dates
are normalized into YYYY-MM-DD format and DateTime are normalized into ISO8601
format to allow easy sorting and searching.  4 digit years must be used to
detect dates.  US (swapped day and month) versus rest of the world is also
detected providing there is at least one value that resolves the ambiguity.

Care is taken to ensure that columns looking like numbers are only treated as
numbers if they do not have unnecessary leading zeroes or plus signs.  This is
to avoid treating phone numbers and similar number like strings as integers.

This command can take quite some time on large files as they are effectively
imported twice.  The first time is to determine the format and the types for
each column while the second pass actually imports the data.
于 2013-07-15T03:54:14.730 に答える