sqlldr简单导入自增序列的数据

本文详细介绍了如何通过SQL Loader工具,将外部文本文件的数据批量导入到Oracle数据库表中,并利用序列(Sequence)实现自增ID的生成。包括了配置文件的细节、参数解释、以及导入过程的优化技巧。
建表
create table WBH_TEMP7
(
ID NUMBER,
TERMINAL_ID VARCHAR2(50)
)

建序列
create sequence SEQ_A
minvalue 1
maxvalue 99999999
start with 1
increment by 1
nocache;

如果1.txt内容为以下
号码
11111111
22222222
33333333
44444444

控制文件1.ctl
LOAD DATA
INFILE "1.txt" --导入数据文件名称
append --append追加,truncate清空
INTO TABLE wbh_temp7 --目标数据库表名
Fields terminated by "," --指定数据列的分隔符
trailing nullcols -- 表的字段没有对应的值时允许为空
(
TERMINAL_ID,
ID "SEQ_A.NEXTVAL" --id列导入seq_a的自增序列
)

导入命令
sqlldr user/password control=1.ctl skip=1 load=200000 errors=100 rows=1000 bindsize=33554432

user/password //数据库的用户名密码
control //sqlldr控制文件位置
skip=1 //表示跳过第一行,从第二行开始导入
load=200000 //表示并不导入所有的数据,只导入跳过skip参数后的200000条数据
rows=1000 //表示一次加载的行数,默认值为64,此处设置为1000
errors=100 //表示出错100次后,停止加载
bindsize=33554432 //表示每次提交记录缓冲区的大小,默认256k

导入数据后数据库表中的内容
ID TERMINAL_ID
1 11111111
2 22222222
3 33333333
4 44444444
你可以使用以下步骤将 MySQL 数据格式转换为 Oracle 数据格式: 1. 导出 MySQL 数据库中的数据为 SQL 文件。你可以使用以下命令导出: ``` mysqldump -u 用户名 -p 密码 数据库名 > 导出文件名.sql ``` 2. 打开导出的 SQL 文件,用文本编辑器查找并替换以下内容: ``` ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 替换为: ``` STORAGE (BUFFER_POOL DEFAULT) CHARSET AL32UTF8; ``` 这将更改表的存储引擎及字符集。 3. 将 SQL 文件导入到 Oracle 数据库中。你可以使用以下命令导入: ``` sqlplus 用户名/密码@数据库名 @导入文件名.sql ``` 4. 确保在 Oracle 数据库中创建了与 MySQL 数据库相同的表和列,以便导入数据。 如果表的列名在 Oracle 中是关键字(如 DATE),则需要用双引号将列名括起来。 如果表中有自列(如 AUTO_INCREMENT),则需要在 Oracle 中创建序列并使用触发器来模拟自列。 如果表中有 ENUM 类型的列,则需要在 Oracle 中创建对应的 CHECK 约束。 如果表中有 SET 类型的列,则需要在 Oracle 中创建对应的多选列表。 5. 将 MySQL 数据库中的数据导入到 Oracle 数据库中。你可以使用以下命令导入: ``` mysql -u 用户名 -p 密码 数据库名 -e "SELECT * FROM 表名" | awk '{gsub(/\t/,","); print}' | sqlldr 用户名/密码@数据库名 control=控制文件名 ``` 其中,控制文件是一个包含导入规则的文件,它告诉 SQL*Loader 如何将数据导入到 Oracle 中。你需要编写自己的控制文件以适应你的数据格式。 这些步骤应该可以帮助你将 MySQL 数据库中的数据格式转换为 Oracle 数据库中的数据格式。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值