我正在尝试使用查询导入一个包含2列(...和3行......仅用于测试)的.csv文件:
IMPORT FROM "C:\db2\dtest.csv" OF DEL INSERT INTO TEST_DATA.DTEST (CAR, NICKNAME)
我收到此错误:
SQL0104N:SQL0104N意外的令牌“IMPORT FROM”C:\ db2 \ dtest.csv“ “DEL”是在“BEGIN-OF-STATEMENT”之后发现的。预期的代币可以 包括:“”。 SQLSTATE = 42601
如果我只是在这里愚蠢,请告诉我:)
答案 0 :(得分:1)
IMPORT不是SQL,它是一个命令。这意味着您必须从Db2命令窗口(CLP),脚本或存储过程提交IMPORT。除非使用ADMIN_CMD存储过程,否则无法通过SQL直接提交。有关详细信息和示例,请参阅documentation。如果您通常通过GUI工具与数据库交互,则可以使用ADMIN_CMD。
如果您经常使用批处理命令或使用任何脚本语言编写脚本,则最好使用命令行 - 并且您有能力编写脚本并使用命令行。但是这种方法具有先决条件,特别是如果数据库位于与您正在使用的数据库不同的主机名或不同的Db2实例上(即数据库是远程的)。对于远程数据库,需要通过db2 catalog tcpip node ....
和db2 catalog database ...
命令对数据库进行编目。
此外,您必须先通过db2 connect to ...
连接到数据库。无论数据库是本地数据库还是远程数据库,都必须这样做。有关详细信息,请参阅文档对于本地数据库,您只需使用db2 connect to dbname
,其中dbname必须是您的数据库名称。
对于不熟悉命令行工具的新用户而言,使用ADMIN_CMD存储过程通常更容易。
要使用Db2命令窗口(CLP),您可以以交互方式使用它,也可以使用操作系统shell。在Windows上,使用db2cwadmin.bat打开此类窗口(用于批处理或命令使用),或运行db2.exe以进入交互模式。然后,您可以在交互模式下运行导入命令。
答案 1 :(得分:0)
当我将数据从CSV导入Sql DB时,发生了这种情况 - 在我的情况下,这是因为格式不正确的CSV文件。 从CSV文件中提取数据时,请查看数据预览,以便了解数据的错误位置。 可能是因为不同的字符,如'等等。 --t