English 中文(简体)
使用单个 INSERT 语句在表格中插入多行
原标题:Inserting multiple rows into a table using a single INSERT statement

我不知道为什么我不能用此语法将值插入我的表格。 我可以插入一行, 但我不能插入多个行 。

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)
问题回答

您的语法是正确的。 但是, 插入多行是一个 SQL- 92 特性。 您的数据库似乎不支持它 。

尝试明确定义要插入的列 :

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

见< a href=> "http://sqlfiddle.com/#!3/efd07/2" rel = "no follow" > this work example

我不认为所有数据库都支持使用 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 服务器语法来获取常数 。 您可能需要添加类似“ 双向” 的东西 。 )

最后,我完全同意其他海报的观点,即将列列表放在表格名称之后是您应该自动这样做的良好做法。 那么,另一个良好做法是设置一个自动加注的 ID 列,如果您有其中之一,您需要列列表。

但是,没有名单不应造成你的问题。

此特定错误是因为您没有用分号终止您的 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);

也可能你遇到的下一个错误是戈登的反应, 因为新西兰并不真正支持任何先进的VALUES条款选项。

正如上述大多数答复正确解释的那样,Netezza不支持VALUES条款,因为它属于新西兰不熟悉的SQL-92级,你也可以使用与Netezza客户一起装运的Nzload工具一枪就装载你的数据。

从 CSV 文件将数据装入NZ表格的命令是 :

nzload -host <host> -u <username> -pw <password> -db <db_name> -t <table_name> -delim  ,  -df <data_file>

Netezza 支持在 SQL 中批量上传。 非标准外表用 CSV 平面文件替换普通表格。 这可以在 INSERT...SELECT... 语句中使用。

注意 < 坚固 > USING < / 坚固 > 条款没有逗号分隔条件( 我被咬了一下) 。 另外, 由于我使用 PyODBC, 设置了 PIPE 分隔符和 < 坚固 > ODBC < / 坚固 > 。 < 坚固 > JAVA < / 坚固 > 是另一个 < 坚固 > REMOTESOURC < / 坚固 > 。 < 坚固 > skiprows 1 < / 坚固 > 术语丢弃了页头 。

INSERT INTO NetezzaTable
SELECT *
FROM EXTERNAL  C:\temp\Your.csv 
USING (
delimiter  | 
REMOTESOURCE  ODBC 
LOGDIR  C:\temp 
skiprows 1
maxerrors 0
fillrecord);




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

难以执行 REGEXP_SUBSTR

I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域

SQL Query Shortcuts

What are some cool SQL shorthands that you know of? For example, something I learned today is you can specify to group by an index: SELECT col1, col2 FROM table GROUP BY 2 This will group by col2

PHP array callback functions for cleaning output

I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

Running numbers in SQL

I have a SQL-statement like this: SELECT name FROM users WHERE deleted = 0; How can i create a result set with a running number in the first row? So the result would look like this: 1 Name_1 2 ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签