1、在数据库中创建与CSV结构相同的数据表结构。
2、创建一个文本文件,修改后缀名为【xxxx.CTL】。注意:文件路径最好不要有中文!!!
例如:
3、在文件中根据以下参数编写内容:
options(skip=1,COLUMNARRAYROWS=20971520, ROWS=10000, READSIZE=20971520, ERRORS=20)
load data
characterset ZHS16GBK
infile 'E:\data\Test.csv'
APPEND INTO TABLE "table_name"
fields terminated by ','
OPTIONALLY ENCLOSED BY '"'
(
col1,
col2
col3,
col4
)
skip=1: 跳过CSV文件的第一行,通常用于跳过标题行。
COLUMNARRAYROWS=20971520: 指定列数组的大小,这个值为20971520,用于优化加载大量数据时的内存使用。
ROWS=10000: 指定每次提交的行数,这里为10000行。SQL*Loader在加载数据时会批量提交,以提高效率。
READSIZE=20971520: 指定读取数据的缓冲区大小,这里为20971520字节(20MB),用于优化读取性能。
ERRORS=20: 允许的最大错误数,这里设置为20,表示允许有20条错误行数,SQL*Loader将继续加载数据直到达到这个错误数为止。
characterset ZHS16GBK指定CSV文件的字符集为ZHS16GBK(需要CSV文件的字符集做修改)
INFILE :指定了CSV文件的路径。
APPEND INTO TABLE 指示将数据追加到表中。如果目标表不存在,可以使用 INTO TABLE 替代 APPEND INTO TABLE。
FIELDS TERMINATED BY ‘,’ :指定CSV文件中字段的分隔符
OPTIONALLY ENCLOSED BY ‘"’ 表示字段可能被双引号包围
TRAILING NULLCOLS 允许最后几列为空。
4、打开CMD 在CMD中执行以下语句
sqlldr username/password@SID control=load_data.ctl log=load_data.log
**例如**
sqlldr Test/Test@ORCL control=E\data\Test.ctl log=E\data\Test.log
username/password@SID 是数据库连接信息。
control=load_data.ctl 指定控制文件。
log=load_data.log 指定日志文件,记录SQL*Loader的执行过程和结果。