CSV ファイルから SQL テーブルおよびビューへのデータのロード
この例は、CSV (comma-separated value) ファイルに格納されているデータを既存のテーブルおよびビューにロードする方法を示しています。
データのロード先のテーブルを作成します。このテーブルには、メンバシップ・データを指定する 3 つのフィールド、メンバ ID、月単位でのメンバシップ期間の長さ、およびメンバが住んでいる米国の州 (2 文字の州の省略形を使用) が含まれます。
CREATE TABLE Sample.Members (
MemberId INT PRIMARY KEY,
MemberTerm INT DEFAULT 12,
MemberState CHAR(2))
これらのデータ・レコードをテキスト・ファイルにコピーします。このファイルをローカル・マシンに保存し、members.csv という名前を付けます。このファイルは、メンバシップ ID とメンバの州の値を指定します。2 番目の行は、値が配置される位置の前に挿入されたプレースホルダのコンマによって示されているように、値が欠落しています。
6138830,MA
1720936,
4293608,NH
LOAD DATA を使用して Sample.Members テーブルにデータをロードします。ここに示されているパスを、ファイルを保存したパスに置き換えます。
LOAD DATA FROM FILE 'C://temp/members.csv' INTO Sample.Members (MemberId,MemberState)
データを確認します。MemberId 列と MemberState 列が生成されています。ソース・ファイルには MemberTerm 列のデータは含まれていなかったため、これらの列の値は既定の 12 となっています。欠落している行の値は、NULL 値としてロードされます。
SELECT * FROM Sample.Members
MemberId |
MemberTerm |
MemberState |
6138830 |
12 |
MA |
1720936 |
12 |
|
4293608 |
12 |
NH |
LOAD DATA の全体としての SQLCODE 結果は 0 (成功) であるため、LOAD DATA はデータが欠落していても SQLCODE エラーを報告しません。以下の場合、LOAD DATA 操作は成功と見なされます。
個々の行の SQLCODE エラーを、LOAD DATA 操作に関するその他の情報と共に表示するには、%SQL_Diag.Result テーブルと %SQL_Diag.Message テーブルを使用します。詳細は、"ロードされたデータの診断ログの表示" を参照してください。
最新の LOAD DATA 操作のメッセージを表示します。州の省略形が欠落している行は、SQLCODE エラー -104 を報告しています。表示されている結果は読みやすいように切り詰められています。
SELECT actor,message,severity,sqlcode
FROM %SQL_Diag.Message
WHERE diagResult =
(SELECT TOP 1 resultId
FROM %SQL_Diag.Result
ORDER BY resultId DESC)
アクター |
メッセージ |
重大度 |
SQLCODE |
server |
{"resultid":"1","bufferrowcount":500, ... } |
info |
0 |
FileReader |
Reader Complete: Total Input file read time: 23 ms, |
completed |
0 |
JdbcWriter |
[SQLCODE: <-104>:<Field validation failed in INSERT>] [%msg: ... (Varchar Value: 'state...' Length: 5) > maxlen: (2)>] |
error |
-104 |
JdbcWriter |
Writer Complete: Total write time: 72 ms, |
completed |
0 |
テーブルからビューを作成する場合は、ビューを使用してデータをテーブルにロードすることもできます。Sample.Members テーブルのメンバシップ ID と状態の列のみを表示するビューを作成します。
CREATE VIEW Sample.VMem (MId,State) AS SELECT MemberId,MemberState FROM Sample.Members
これらの追加データ・レコードをテキスト・ファイルにコピーします。このファイルをローカル・マシンに保存し、members2.csv という名前を付けます。
6785674,VT
4564563,RI
4346756,ME
LOAD DATA を使用して、作成したビューを使用することにより、この新しい CSV データをテーブルにロードします。
LOAD DATA FROM FILE 'C://temp/members2.csv' INTO Sample.VMem(MId,State)
ビューによって返されたデータを確認します。ここには、ロードされた両方の CSV ファイルのデータが含まれています。
SELECT * FROM Sample.VMem
MId |
State |
6138830 |
MA |
1720936 |
|
4293608 |
NH |
6785674 |
VT |
4564563 |
RI |
4346756 |
ME |
ベース・テーブルのデータを確認します。ここには、両方の CSV ファイルの結合された列データが含まれています。2 度目にロードされた CSV ファイルでも、MemberTerm 列の値には既定値の 12 が適用されています。
SELECT * FROM Sample.Members
MemberId |
MemberTerm |
MemberState |
6138830 |
12 |
MA |
1720936 |
12 |
|
4293608 |
12 |
NH |
6785674 |
12 |
VT |
4564563 |
12 |
RI |
4346756 |
12 |
ME |
ビューとテーブルを削除します。
DROP VIEW Sample.VMem
DROP TABLE Sample.Members