温馨提示×

linux oracle怎样导入数据

小樊
42
2026-09-10 10:13:15
栏目: 云计算

Linux 环境下使用 Oracle 导入数据,常见方式有以下几种,按使用频率从高到低说明:


一、使用 impdp(数据泵导入,推荐 ✅)

1️⃣ 准备工作

确保:

  • Oracle 已安装并启动
  • .dmp 文件(通常由 expdp 导出)
  • 有目标用户和表空间

2️⃣ 创建目录对象(只需一次)

sqlplus / as sysdba

CREATE OR REPLACE DIRECTORY dp_dir AS '/u01/app/oracle/dump';
GRANT READ, WRITE ON DIRECTORY dp_dir TO scott;

.dmp 文件放到 /u01/app/oracle/dump

3️⃣ 执行导入

impdp scott/tiger@orcl \
DIRECTORY=dp_dir \
DUMPFILE=scott.dmp \
LOGFILE=imp.log

常用参数:

REMAP_SCHEMA=old_user:new_user
REMAP_TABLESPACE=old_ts:new_ts
TABLE_EXISTS_ACTION=REPLACE
FULL=Y

二、使用 imp(传统导入,老版本)

imp scott/tiger@orcl \
FILE=/u01/app/oracle/dump/scott.dmp \
LOG=/u01/app/oracle/dump/imp.log \
FULL=y

⚠️ 仅用于老系统或 .dmpexp 导出的


三、使用 SQL*Loader 导入文本数据(CSV / TXT)

1️⃣ 控制文件 load.ctl

LOAD DATA
INFILE '/u01/data/test.csv'
INTO TABLE emp
FIELDS TERMINATED BY ','
(empno, ename, sal)

2️⃣ 执行导入

sqlldr scott/tiger control=load.ctl log=load.log

四、使用 SQL 脚本导入

sqlplus scott/tiger @data.sql

适合小数据量或结构初始化。


五、常见问题排查

✅ 权限问题

GRANT IMP_FULL_DATABASE TO scott;

✅ 表空间不存在

CREATE TABLESPACE ts DATAFILE '/u01/oradata/ts01.dbf' SIZE 100M;

✅ 字符集问题

SELECT * FROM nls_database_parameters WHERE PARAMETER LIKE '%CHARACTERSET%';

六、推荐方案总结

场景 推荐方式
整库/用户迁移 impdp
老系统 imp
文本数据 sqlldr
脚本初始化 sqlplus

如果你愿意,可以告诉我:

  • Oracle 版本
  • 数据来源(.dmp / CSV / SQL)
  • 是否跨用户或跨表空间

我可以给你 精准命令示例

0