Oracle:导入CSV文件

| 我已经搜索了一段时间,但似乎找不到答案,所以这里... 我有一个CSV文件,我想将其导入Oracle(9i / 10i)的表中。 稍后,我计划将此表用作其他用途的查询。 这实际上是我正在努力解决的问题,因为无法使用超过1000个值的IN子句进行查询。 如何使用SQLPLUS完成? 谢谢你的时间! :)     
已邀请:
        SQL Loader帮助将csv文件加载到表中:SQL * Loader 如果只想使用sqlplus,那么它将变得有些复杂。您需要找到sqlloader脚本和csv文件,然后运行sqlldr命令。     
        您可以使用的另一个解决方案是SQL Developer。 有了它,您就可以从csv文件导入(可以使用其他定界文件)。 只需打开表视图,然后: 选择动作 汇入资料 找到你的文件 选择您的选项。 您可以选择让SQL Developer为您执行插入操作,创建sql插入脚本或为SQL Loader脚本创建数据(我自己尚未尝试过此选项)。 当然,如果您只能使用命令行,那么所有这些都是没有意义的,但是,如果您能够使用SQL Developer在本地进行测试,则始终可以部署生成的插入脚本(例如)。 只需在2个已经非常好的答案中添加另一个选项。     
        一种替代解决方案是使用外部表:http://www.orafaq.com/node/848 当您必须非常频繁且非常快速地执行此导入时,请使用此选项。     
        SQL Loader是必经之路。 我最近从一个csv文件加载了表格,这是这个概念的新知识,想分享一个例子。
LOAD DATA
    infile \'/ipoapplication/utl_file/LBR_HE_Mar16.csv\'
    REPLACE
    INTO TABLE LOAN_BALANCE_MASTER_INT
    fields terminated by \',\' optionally enclosed by \'\"\'
    (
    ACCOUNT_NO,
    CUSTOMER_NAME,
    LIMIT,
    REGION

    )
将控制文件和csv放在服务器上的同一位置。 找到sqlldr exe并调用它。 sqlldr userid / passwd @ DBname控制= 例如:sqlldr abc / xyz @ ora control = load.ctl 希望能帮助到你。     
        有人要求我发布该框架的链接!是我在Open World 2012上介绍的。这是完整的博客文章,演示了如何使用外部表构建解决方案。     
        从
Oracle 18c
开始,您可以使用内联外部表:   内联外部表可将外部表的运行时定义作为SQL语句的一部分启用,而无需在数据字典中将外部表创建为持久对象。      对于内联外部表,可以在运行时的SELECT语句中使用与使用CREATE TABLE语句创建外部表相同的语法。在查询块的FROM子句中指定内联外部表。包含内联外​​部表的查询也可以包括用于联接,聚合等的常规表。
INSERT INTO target_table(time_id, prod_id, quantity_sold, amount_sold)
SELECT time_id, prod_id, quantity_sold, amount_sold
FROM   EXTERNAL (   
    (time_id        DATE NOT NULL,     
     prod_id        INTEGER NOT NULL,
     quantity_sold  NUMBER(10,2),
     amount_sold    NUMBER(10,2))     
    TYPE ORACLE_LOADER     
    DEFAULT DIRECTORY data_dir1
    ACCESS PARAMETERS (
      RECORDS DELIMITED BY NEWLINE
      FIELDS TERMINATED BY \'|\')     
   LOCATION (\'sales_9.csv\') REJECT LIMIT UNLIMITED) sales_external;
    

要回复问题请先登录注册