Python で odo を使用して、csv ファイルから mysql テーブルにデータをロードしようとしています。
csv ファイルには空白のセルが含まれています。odo コマンドは、空白のセルに遭遇するとファイルします。
odo コマンドを使用してデータをロードし、欠落しているデータに対してデフォルトで null 値を挿入する方法を教えてください。
odo python パッケージを使用して、Quandl からダウンロードした単純な CSV ファイルを MySQL テーブルにインポートしようとしています。
t = odo(csvpathName)
CSV では、rsow は次のようになります。2 行目に値がありません。
A 7/25/2016 46.49 46.52 45.92 46.14 1719772 0 1 46.49 46.52 45.92 46.14 1719772
B 7/25/2016 46.49 46.52 45.92 1719772 0 1 46.49 46.52 45.92 46.14 1719772
MySQL テーブルは次のように定義されます。
Ticker varchar(255) NOT NULL,
Date varchar(255) NOT NULL,
Open numeric(15,2) NULL,
High numeric(15,2) NULL,
Low numeric(15,2) NULL,
Close numeric(15,2) NULL,
Volume bigint NULL,
ExDividend numeric(15,2),
SplitRatio int NULL,
OpenAdj numeric(15,2) NULL,
HighAdj numeric(15,2) NULL,
LowAdj numeric(15,2) NULL,
CloseAdj numeric(15,2) NULL,
VolumeAdj bigint NULL,
PRIMARY KEY(Ticker,Date)
次の情報で例外 1366 をスローします。
sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366、「不正な 10 進数値: '' 行 185 の列 'High' の ''」) [SQL: 'LOAD DATA INFILE %(path)s\n INTO TABLE QUANDL_DATA_WIKI\ n 文字セット %(encoding)s\n フィールド\n %(delimiter)s で終了\n %(quotechar)s で囲み\n %(escapechar)s でエスケープ\n %(lineterminator)s で終了する行\n IGNORE %(skiprows)s LINES\n '] [parameters: {'quotechar': '"', 'encoding': 'utf8', 'path': 'C:\ProgramData\MySQL\MySQL Server 5.6\Uploads\WIKI_20160725 .partial.csv', 'lineterminator': '\n', 'escapechar': '\', 'skiprows': 0, 'delimiter': ','}]
簡単なコマンドで欠損値を NULL 値としてアップロードできるように ODO を構成する方法を知っている人はいますか?