从sql文件导入数据到Oracle使用sql
我正在使用Oracle 10g SQL Developer 我想知道是否有任何方法可以从CSV文件导入数据,这些数据由','和行分隔通过使用SQL查询 “\ n”我想这个查询从sql文件导入数据到Oracle使用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开发人员得到错误信息,告诉我UNKNOW命令
您需要使用SQLLDR工具,以加载数据。首先根据您的要求创建一个控制文件(以.ctl的扩展名结尾),如下所述。
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
)
现在执行sqlldr实用程序来加载数据,如下所述。
sqlldr userid=database_username/[email protected]_name control=path_where_control_file_is_placed_followed_by_control_file_name LOG=path_for_log_file BAD=path_for_bad_records Discard=path_for_discard_records
您应该使用Oracle SQL Loader为此,不是 SQLPLUS或SQL开发
或者您可以使用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'));
你能解释一下关于使用SQL * Loader的更多信息吗,我只想用查询?命令** LOAD DATA INFILE **不起作用? –
@Mahran,没有像“LOAD DATA ...”这样的sql命令 - 它是SQL Loader工具的指令。所以它可能只能用于SQL Loader。但是你可以使用外部表格作为替代 - 我会用一个例子更新我的答案 – MaxU
在Windows 10例和甲骨文12C
,如果你有一个用逗号分隔的每个表的记录的文本文件,你可以这样做:
为每个控制文件表,称为table_name.ctl(C:\用户\用户\桌面\目录\ table_name.ctl)
load data
infile 'C:\Users\user\Desktop\directory\table_name.txt'
append
into table table_name
fields terminated by ","
(id, field2,field3)
后,在窗口应该打开Cmd并在每个表中加载数据,然后例如在aws服务器中远程加载数据。
sqlldr [email protected]_PDB1/password
control='C:\Users\user\Desktop\directory\table_name.ctl' log='C:\Users\user\Desktop\directory\table_name.log'
或
sqlldr control='C:\Users\user\Desktop\directory\table_name.ctl' log='C:\Users\user\Desktop\directory\table_name.log'
and then ask them the user and password
如果你有以下错误:“程序无法启动,因为oranfsodm12.dll从计算机中缺少。尝试重新安装程序来解决这个问题“
这是因为SQL * Loader的 被禁用,并且不能在控制台窗口中使用,这是解决 使下面的步骤(如http://www.dallasmarks.com/installing-two-oracle-12c-clients-on-one-server/):
应到文件夹 C:\ ORACLE \客户端\用户\产品\ 12.1.0 \ Client_1与\ BIN
制作oraodm12.dll文件的副本,称新的文件 oranfsodm12.dll ,和过去在同一个BIN文件夹中。
从cmd再次运行该命令。
非常感谢你的回答,我已经解决了我的问题,我做了同样的事情,当你为正确答案+1时 –