web-dev-qa-db-ja.com

MonetDBを使用した型認識、CSVからテーブルを*作成*

MonetDBのnewテーブルにレコードをコピーできるかどうか混乱しています。

公式ドキュメント らしい 既存のテーブルへのコピーについてのみ説明します。私は数十のテーブルに数十億のレコードの非常に大きなユニバースを持っているので、CSV自体からタイプを推測し、最初の行から列名を推測するソリューションを強く望んでいます。

StackOverflowの回答OpenRowsetを使用するSQLServer 2000で機能するようですが、データ型の推論については関係ありません。

別の回答 ここDBAでは、Server2000でBULK INSERTを呼び出す前にBCPを推奨していますが、どちらもMonetDBのドキュメントでは説明されていません。

その他の回答 これは、外部スクリプトがないとMySQLでは不可能であることも示唆しています。

免責事項:私はSQLとMonetDBの初心者ですが、明らかなことを見逃さないようにしてくれてありがとう。

1
László

実際、COPY INTOには事前にCREATE TABLEが必要です。現在のところ、スキーマを推測する一般的な方法はありません。ここでの主な問題は、CSVエンコーディングの膨大な多様性です。

そうは言っても、 MonetDB.R コネクタは、monetdb.read.csv関数を介したスキーマの「推測」をサポートします。

また、CSV読み込みタスクを自動化するためのPythonスクリプトに取り組んでいます。スクリプト(importer.py)が利用可能です 私のCWIページから 。次のように機能します。

./importer.py -h
usage: importer.py [-h] [--database DATABASE] [--port PORT] [--user USER]
                   [--password PASSWORD] [--header] [--yes]
                   files [files ...]

A "smarter" CSV loader for MonetDB, v.0.3, [email protected], 2014-05

positional arguments:
  files                One or many CSV files to be imported

optional arguments:
  -h, --help           show this help message and exit
  --database DATABASE  Database name to connect to
  --port PORT          MonetDB TCP port, defaults to 50000
  --user USER          MonetDB username, defaults to "monetdb"
  --password PASSWORD  MonetDB password, defaults to "monetdb"
  --header             set if given CSV file has a header in the first line
  --yes                if set, assume Yes on all questions

使用例:

./importer.py --database acs ~/Desktop/adult.csv
Now probing '/ufs/hannes/Desktop/adult.csv':

OK, I am going to run the following commands on your DB acs:

CREATE TABLE adult5 (C1 DOUBLE, C2 STRING, C3 STRING, C4 STRING, C5 STRING, C6 STRING, C7 STRING, C8 STRING, C9 STRING, C10 STRING, C11 DOUBLE, C12 STRING, C13 BIGINT);
COPY 35469 OFFSET 1 RECORDS INTO adult5 FROM '/ufs/hannes/Desktop/adult.csv' USING DELIMITERS ',','\n','"' NULL AS '' LOCKED;

Proceed? [Y/n] y
imported 30162 rows from /ufs/hannes/Desktop/adult.csv in 3 second(s)

何か問題がありましたらお知らせください。

2