1

この構文を使用してテーブルに値を挿入できない理由がわかりません。1 行は挿入できますが、複数行は挿入できません。

CREATE TABLE T1 (
             ID BIGINT NULL,
             CAT VARCHAR(255) NULL,
             M_ID BIGINT NULL,
             T_CAT  VARCHAR(255) NULL,
             NUM BIGINT NULL) 

    INSERT INTO T1
    VALUES
    (32,'Math',945,'Red',2),
    (6,'English',232,'Blue',2)
4

6 に答える 6

4

あなたの構文は正しいです。ただし、複数行の挿入は SQL-92 の機能です。データベースがサポートしていないようです。

于 2012-05-24T20:23:18.670 に答える
1

この特定のエラーは、CREATE TABLE ステートメントをセミコロンで終了しなかったことが原因です。Netezza ではステートメントを終了する必要があり、複数ステートメントのクエリをインテリジェントに解析しません。

CREATE TABLE T1 (
         ID BIGINT NULL,
         CAT VARCHAR(255) NULL,
         M_ID BIGINT NULL,
         T_CAT  VARCHAR(255) NULL,
         NUM BIGINT NULL); 

INSERT INTO T1
VALUES
(32,'Math',945,'Red',2),
(6,'English',232,'Blue',2);

また、NZ は高度な VALUES 句のオプションを実際にはサポートしていないため、次に遭遇するエラーは Gordon の応答になる可能性があります。

于 2012-10-03T12:59:44.613 に答える
1

挿入する列を明示的に定義してみてください。

INSERT INTO T1 (ID, CAT, M_ID, T_CAT, NUM)
VALUES
(32,'Math',945,'Red',2),
(6,'English',232,'Blue',2)

この作業例を参照してください

于 2012-05-24T20:16:38.847 に答える
1

すべてのデータベースが VALUES ステートメントを使用した複数行の挿入をサポートしているとは思いません。別の挿入ステートメントを使用できます。

INSERT INTO T1 VALUES  (32,'Math',945,'Red',2);
INSERT INTO T1 VALUES  (6,'English',232,'Blue',2);

または、代わりに SELECT 構文を使用できます。

INSERT INTO T1
    select 32,'Math',945,'Red',2 union all
    select 6,'English',232,'Blue',2

(注:定数を取得するためにSQL Server構文を使用しました。「from dual」などを追加する必要があるかもしれません。)

最後に、テーブル名の後に列のリストを配置することは非常に良い習慣であるため、自動的に行うべきであるという他のポスターに完全に同意します。もう 1 つの良い方法は、自動インクリメント id 列を使用することです。それらのいずれかがある場合は、列のリストが必要です。

ただし、リストがないことで問題が発生することはありません。

于 2012-05-24T20:28:21.453 に答える
0

上記の回答のほとんどは、NZ が慣れていない SQL-92 クラスに属しているため、Netezza は VALUES 句をサポートしていないことを正しく説明しているため、Netezza クライアントに同梱されている nzload ツールを使用して、データを一度にロードすることもできます。 .

CSV ファイルから NZ テーブルにデータをロードするコマンドは次のようになります。

nzload -host <host> -u <username> -pw <password> -db <db_name> -t <table_name> -delim ',' -df <data_file>
于 2013-09-19T09:47:37.797 に答える