使用sql将数据从文件csv导入Oracle

时间:2016-02-26 08:28:49

标签: database oracle csv import

我正在使用Oracle 10g,SQL Developer 我想知道是否有任何方法可以从CSV文件中导入数据,这些字段由','这些行由' \ n'终止使用SQL查询 我试过这个查询

  

LOAD DATA INFILE 'C:/tmp.csv' INTO TABLE CSVTEST2 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 lines (ID,FIRSTNAME,LASTNAME,BIRTHDATE);

但它没有用,我总是收到来自sql Developer的错误消息告诉我未知命令

4 个答案:

答案 0 :(得分:4)

您需要使用sqlldr实用程序才能加载数据。首先根据您的要求创建一个控制文件(以.ctl的扩展名结尾),如下所述。

fetchEvent(): Promise<EventModel> {
    return this._apiService.get.event(this.eventId);
}

ngOnInit() {
    this.fetchEvent().then(event => this.ev = event);
}

现在执行sqlldr实用程序以加载数据,如下所述。

load data
infile 'path_where_file_is_placed_followed_by_file_name'
into table table_name_where_you_want_to_insert_the_data_of_csv_file
fields terminated by ','  lines terminated by '\n' 
(
field1 datatype,
field2 datatype,
field3 datatype
)

答案 1 :(得分:3)

你应该使用Oracle SQL Loader不是 sqlplus或SQL Developer

或者,您可以使用external tables

-- this command must be executed on the Oracle server machine, NOT on the client:
create directory ext_tab_dir as '/path/to/dir/where/you/will/put/your/csv/files';

CREATE TABLE emp_load (
    employee_number         CHAR(5), 
    employee_last_name      CHAR(20),
    employee_first_name     CHAR(15),
    employee_middle_name    CHAR(15)
)
ORGANIZATION EXTERNAL (
    TYPE ORACLE_LOADER
    DEFAULT DIRECTORY ext_tab_dir
    ACCESS PARAMETERS (RECORDS FIXED 62 
        FIELDS (
            employee_number CHAR(2),
            employee_dob CHAR(20),
            employee_last_name CHAR(18),
            employee_first_name CHAR(11),
            employee_middle_name CHAR(11)
        )
    )
    LOCATION ('tmp.csv'));

答案 2 :(得分:1)

Windows 10和Oracle 12c上的示例

如果你有一个文本文件,其中包含用逗号分隔的每个表的记录,你可以这样做:

为每个表创建一个名为table_name.ctl的控制文件(C:\ Users \ user \ Desktop \ directory \ table_name.ctl)

<% @shoes.in_groups_of(5) do |shoe_groups| %>
    <% shoe_groups.each do |shoe| %>
         <%= shoe.name %>
    <% end %>
    <%= 'Green Box' if shoe_groups.size % 5 == 0 %>
<% end %>

之后,在Windows中,您应该打开Cmd并在每个表中加载数据,然后远程加载数据,例如在aws服务器中。

load data 
infile 'C:\Users\user\Desktop\directory\table_name.txt' 
append
into table table_name
fields terminated by ","
(id, field2,field3)

sqlldr userid=USER@AWS_PDB1/password
control='C:\Users\user\Desktop\directory\table_name.ctl' log='C:\Users\user\Desktop\directory\table_name.log'

如果您遇到以下错误:“程序无法启动,因为您的计算机缺少oranfsodm12.dll。请尝试重新安装该程序以解决此问题。“

这是因为SQL * Loader 已禁用,无法在控制台窗口中使用,这已解决 启用以下步骤(如ignore-loader):

  1. 应该转到该文件夹 C:\ ORACLE \客户\用户\产品\ 12.1.0 \的Client_1 \ BIN

  2. 制作oraodm12.dll文件的副本,并调用新文件     oranfsodm12.dll,并将其粘贴到同一个BIN文件夹中。

  3. 再次从cmd运行命令。

答案 3 :(得分:1)

在Oracle SQL开发人员中,您只需转到左侧的表格列表,该列表应位于connections下。

然后双击表&gt;行动&gt;导入数据

然后,您可以使用导入向导和所需的设置。当您提出这个问题时,我不确定Oracle SQL开发人员中是否存在该功能,但现在可以使用了。