oracle - sqlldr远程批量导入数据
需要将大量的数据导入oracle数据库,目前只找到了oracle sqlldr工具。
下边是详细步骤,亲测有效,可连接远程oracle数据库
1.安装oracle 19c client,安装好之后就有sqlldr了。
2.创建用户
alter system disable restricted session; --orace11g不用执行
alter session set "_ORACLE_SCRIPT"=true; --orace11g不用执行
create user tpch identified by "123456";
grant dba to tpch;
commit;
3.创建表,用工具连接oracle数据库,将schema换成tpch,执行下列语句。
CREATE TABLE CUSTOMER ( C_CUSTKEY INTEGER NOT NULL,
C_NAME VARCHAR(25) NOT NULL,
C_ADDRESS VARCHAR(40) NOT NULL,
C_NATIONKEY INTEGER NOT NULL,
C_PHONE CHAR(15) NOT NULL,
C_ACCTBAL DECIMAL(15,2) NOT NULL,
C_MKTSEGMENT CHAR(10) NOT NULL,
C_COMMENT VARCHAR(117) NOT NULL);
4.导入数据
用oracle client自带的工具sqlldr导入数据
4.1 将customer.tbl放在d:\dmp目录下
我的数据文件,各field的分隔符是|。注意这个分隔符,后边写ctl文件需要用到
1|Customer#000000001|IVhzIApeRb ot,c,E|15|25-989-741-2988|711.56|BUILDING|to the even, regular platelets. regular, ironic epitaphs nag e|
2|Customer#000000002|XSTf4,NCwDVaWNe6tEgvwfmRchLXak|13|23-768-687-3665|121.65|AUTOMOBILE|l accounts. blithely ironic theodolites integrate boldly: caref|
4.2 创建ctl文件。比较讨厌的是必须写上表所有的列名称,表多的情况下太累了,不知道怎么简化。
LOAD DATA
characterset UTF8
infile 'D:\dmp\customer.tbl'
APPEND INTO TABLE tpcds.customer
FIELDS TERMINATED BY '|'
(C_CUSTKEY,C_NAME, C_ADDRESS,C_NATIONKEY,C_PHONE,C_ACCTBAL,C_MKTSEGMENT, C_COMMENT)
4.3 在d:\dmp目录下执行,注意咱们的密码中如果含有@,得用双引号括起来并且转义 \"123@456\"; 如果没有,直接用tpch/123456即可
sqlldr userid=tpch/\"123456\"@host:port/HELOWIN direct=true rows=20000 streamsize=10485760 date_cache=5000 errors=9999 control='customer.ctl' log='customer.log'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?