数据库导入oracle-sqlldr informix-dbload

本文介绍了使用Oracle SQL*Loader和Informix dbload工具将CSV文件数据导入到Oracle及Informix数据库的方法。针对两种工具的命令格式进行了详细解析,并展示了控制文件的配置示例。

oracle sqlldr

sqlldr userid=username/password  control=controlfilename.ctl

controlfile的内容:

Load DATA

INFILE 'csvdatafile.csv'

INTO TABLE TABLENAME

Append

FIELDS TERMINATED BY ',' TRAILING NULLCOLS

(FIELD1,

FIELD2,

FIELD3 Data "yyyy-MM-dd hh24:mi:ss",

FIELD4,

FIELD5 DOUBLE)

------------------------------

Informix  dbload

命令格式:

dbload -d DBNAME -c controlfilename.cmd -l  errorfilename.log -n commitrow

controlfile的内容:

file  "datafilename.csv"  delimiter "," sumFieldNumber;

insert into tablename;

-c后边是命令文件的名称;

-l错误日地文件的名称;

-n 每次提交的数据条数;

数据文件名:datafilename.csv

分隔符:","

每行数据的字段数据:sumFieldNumber

目标表的名称:tablename.

 

### ORA-12504 错误原因及解决方法 ORA-12504 错误通常发生在 Oracle 客户端尝试连接数据库时,监听器无法解析连接标识符,或者连接字符串中缺少必要的信息。此错误在使用 SQL*Loader 或其他命令行工具导入数据时较为常见,尤其是在配置不当或编码不匹配的情况下。 #### 常见原因 1. **监听器未正确配置** 监听器(Listener)没有正确配置或未运行,导致客户端无法通过 TNS 名称解析到数据库实例。 2. **TNS 名称解析失败** `tnsnames.ora` 文件中未定义正确的连接描述符,或者文件路径未被正确设置。 3. **连接字符串格式错误** 使用 `sqlldr` 或 `imp` 命令时,连接字符串格式不正确,缺少必要的服务名或 SID 信息。 4. **环境变量未设置** `TNS_ADMIN` 环境变量未指向 `tnsnames.ora` 和 `sqlnet.ora` 所在目录。 5. **编码问题** 在导入数据时,如果数据文件的编码与数据库字符集不一致,可能会导致连接失败或插入异常,如 ORA-12504 错误[^1]。 #### 解决方法 1. **检查监听器状态** 确保 Oracle 监听器已启动,使用以下命令查看监听器状态: ```bash lsnrctl status ``` 如果监听器未启动,使用以下命令启动: ```bash lsnrctl start ``` 2. **验证 `tnsnames.ora` 配置** 检查 `$ORACLE_HOME/network/admin/tnsnames.ora` 文件,确保连接描述符正确,例如: ```ora ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ``` 3. **使用完整连接字符串** 在 `sqlldr` 或 `imp` 命令中使用完整连接字符串,例如: ```bash sqlldr userid=scott/tiger@'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))' control=load.ctl ``` 4. **设置 `TNS_ADMIN` 环境变量** 如果 `tnsnames.ora` 文件不在默认路径下,需设置 `TNS_ADMIN` 环境变量指向其所在目录: ```bash export TNS_ADMIN=/u01/app/oracle/product/19.0.0/dbhome_1/network/admin ``` 5. **处理编码问题** 如果数据文件编码与数据库字符集不一致,可能导致 ORA-12504 错误。建议将数据文件转换为 ANSI 编码或与数据库一致的字符集(如 AL32UTF8)。可以使用文本编辑器或命令行工具进行转换: ```bash iconv -f UTF-8 -t ANSI input.csv -o output.csv ``` 6. **检查数据库字符集** 确认数据库字符集与客户端一致,可通过以下 SQL 查询: ```sql SELECT parameter, value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'; ``` #### 示例:使用 SQL*Loader 导入数据 ```bash sqlldr userid=scott/tiger@orcl control=load.ctl log=load.log ``` 确保 `load.ctl` 控制文件中的字段定义与数据文件一致,避免因数据格式错误导致连接失败。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值