oracle创建用户saler,Linux环境下sqlldr一个csv文件
本来是练习三思的书里一个sqlldr的小示例,就是把excel文件另存为csv后通过sqlldr加载到Oracle数据库中。其目的本来是为了演示一下csv文件的sqlldr以及csv文件中的字符串中存在逗号, 和双引号”的处理方法,结果却引出了一个让我困惑了一阵子的问题,说大不大说小不小,反复测试了一番,怀疑到了一个点上,最后一查果然是那个样子,再测试就通过了,下面总结一下。
顺便记录一个:
三思说要创建scott这个经典的schema要运行$ORACLE_HOME/rdbms/admin/scott.sql这个脚本的内容,而实际上我并没找到这个脚本,找到并运行的是utlsampl.sql
excel是这样子的:
SMITH
CLEAK
3904
ALLEN
SALER,M
2891
WARD
SALER,"S"
3128
KING
PRESIDENT
2523
另存为'ldr_case2.csv'后内容是:
SMITH,CLEAK,3904
ALLEN,"SALER,M",2891
WARD,"SALER,""S""",3128
KING,PRESIDENT,2523
一切看起都挺正常的,然后将csv上传到Oracle所在的linux服务器上,写好control文件:
load data
infile 'ldr_case2.csv'
truncate into table bonus
fields terminated by ',' optionally enclosed by '"'
(ename,job,sal)
执行加载后日志显示为失败:
Table BONUS, loaded from every logical record.
Insert option in effect for this table: TRUNCATE
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
ENAME FIRST * , O(") CHARACTER
JOB NEXT * , O(") CHARACTER
SAL NEXT * , O(") CHARACTER
Record 1: Rejected - Error on table BONUS, column SAL.
ORA-01722: invalid number
Record 2: Rejected - Error on table BONUS, column SAL.
ORA-01722: invalid number
Record 3: Rejected - Error on table BONUS, column SAL.
ORA-01722: invalid number
Record 4: Rejected - Error on table BONUS, column SAL.
ORA-01722: invalid number
反复测试后,终于发现我把文件中的内容放到在linux下新建的文件中,加载OK,但是看起内容一样的csv怎么改都不行,我就怀疑看起来一样的东西是不是隐藏了什么不为我察觉的差异。带着这个疑问上网搜索了一下,果然有人遇到相同的问题,隐藏的差异就是csv文件行末藏了回车符。在linux下查看对比:
[oracle@nathan-rhel5 ~]$ cat -v ldr_case2.csv
SMITH,CLEAK,3904^M
ALLEN,"SALER,M",2891^M
WARD,"SALER,""S""",3128^M
KING,PRESIDENT,2523^M
[oracle@nathan-rhel5 ~]$ cat -v ldr_case2.dat0
SMITH,CLEAK,3904
ALLEN,"SALER,M",2891
WARD,"SALER,""S""",3128
KING,PRESIDENT,2523
原来作祟的就是文件行末的^M啊!!!
把csv文件转一下格式:
[oracle@nathan-rhel5 ~]$ dos2unix ldr_case2.csv
dos2unix: converting file ldr_case2.csv to UNIX format ...
[oracle@nathan-rhel5 ~]$ cat -v ldr_case2.csv
SMITH,CLEAK,3904
ALLEN,"SALER,M",2891
WARD,"SALER,""S""",3128
KING,PRESIDENT,2523
然后再重新加载一次数据成功了:
[oracle@nathan-rhel5 ~]$ vi ldr_case2.ctl
load data
infile 'ldr_case2.csv'
truncate into table bonus
fields terminated by ',' optionally enclosed by '"'
(ename,job,sal)
[oracle@nathan-rhel5 ~]$ sqlldr scott/tiger control=ldr_case2.ctl
SQL*Loader: Release 10.2.0.1.0 - Production on Sat Feb 22 22:47:31 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Commit point reached - logical record count 4
[oracle@nathan-rhel5 ~]$ vi ldr_case2.log
Control File: ldr_case2.ctl
Data File: ldr_case2.csv
Bad File: ldr_case2.bad
Discard File: none specified
(Allow all discards)
Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array: 64 rows, maximum of 256000 bytes
Continuation: none specified
Path used: Conventional
Table BONUS, loaded from every logical record.
Insert option in effect for this table: TRUNCATE
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
ENAME FIRST * , O(") CHARACTER
JOB NEXT * , O(") CHARACTER
SAL NEXT * , O(") CHARACTER
Table BONUS:
4 Rows successfully loaded.
oracle创建用户saler,Linux环境下sqlldr一个csv文件相关推荐
- Linux环境下移动一个文件夹下的所有文件到另一个文件夹
Linux环境下移动一个文件夹下的所有文件到另一个文件夹 研究命令 最近需要把一个环境里的文件,迁移到另一个环境里去,但是两个环境里的数据会有一些同名的子目录,要求不能覆盖数据而是合并,迁移之前我先做 ...
- linux 普通用户退出vim,Linux环境下VI/VIM编辑文件时无权限保存的解决方法(普通用户)...
在Linux环境下,如果直接使用VI/VIM命令编辑没有修改权限的文件时,保存的时候就会提示用户无法进行保存操作,一般的解决方法只能是关闭文件重新以sudo权限打开该文件编辑后再保存(前提是用户具有s ...
- Linux环境下编写一个shell程序,此程序的功能:随机生成一个1-100的数(答案)让用户猜
题目:编写一个shell程序,此程序的功能:随机生成一个1-100的数(答案)让用户猜,如果用户猜的数大于答案,则提示大了,如果用户猜的数小于答案,则提示小了.当用户猜对时提示:猜对了. #! /bi ...
- 结合xxx.cpp:(.text+0x55):对‘xxx’未定义的引用剖析Linux环境下动态库.so文件
操作系统:Linux系统 场景:g++编译,连接动态库文件时 错误示例(中文): /tmp/cccgNNpb.o:在函数'main'中: test.cpp:(.text+0x55):对'myprint ...
- 【Linux/Ubuntu】linux环境下如何读取doc文件(不是docx文件!!!)
首先下载:antiword点击此单词,即可进行下载 http://www.winfield.demon.nl/linux/antiword-0.37.tar.gz tar -zxvf antiword ...
- Flameshot:Linux 环境下的一个简洁但功能丰富的截图工具
1. 安装 在 Debian 10+ 和 Ubuntu 16.04+ 中,可以使用 apt 包管理器来安装它: sudo apt-get install flameshot 2. 使用 3. 下载 步 ...
- Linux环境下实现一个简单socket通信
大二学计算机网络时留下的一个坑,具体API的实现不太清楚,但照着做程序运行成功了 编写服务端SERVER程序 #include <sys/types.h> #include <sys ...
- Linux环境下mysql的日志
MySQL日志 一.日志概述 1.日志作用 MySQL日志记录了MySQL数据库日常操作和错误信息.MySQL有不同类型的日志文件(各自存储了不同类型的日志),从日志当中可以查询到MySQL数据库 ...
- linux监控php脚本执行时间,在LINUX环境下定时执行php脚本
1. 使用Crontab定时执行linux环境下的php脚本文件 Cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务.所有用户定义的 c ...
最新文章
- object-c中管理文件和目录:NSFileManager使用方法
- Nature新研究:酒精导致的DNA损伤能被安全修复,为降低酒精性癌症发病率开辟机会...
- “请给我一个五彩斑斓的黑”,只需一行命令就能让AI画画,OpenAI的Dall-E被大神复现...
- 如何保证access_token长期有效
- IIS6.0官方技术必读
- 联想继续为其硬件产品完善Linux支持
- 家庭作业(信息学奥赛一本通-T1430)
- linux 高级文件IO
- 软件开发文档-详细设计文档
- Matlab绘制柱状图(含显著性差异*)
- 股票大作手回忆录读书笔记
- iPad及BT4下的WEP破解实验与分析 | Network Security
- 蚂蚁金服首席架构师:区块链技术如何促进数字普惠金融
- html+angularjs+redis获取后台数据模拟京东/天猫的商品分类导航
- 优化代码中的“坏味道”
- 用Python分割文件夹
- 神经网络(九)无监督学习
- 读松下幸之助自传有感
- 英国电信进行下一代SDN测试
- 基于Twitter的Snowflake算法实现的分布式ID生成器
热门文章
- 处理.Dwg文件用哪种技术方案?ObjectARX,RealDWG还是Teigha(ODA)?
- 遍历HashMap中元素的三种方法
- 队列、堆、栈、堆栈的区别?
- JAVA中的CAS算法
- 收费数万元的考研“协议班”藏猫腻,授课质量差,退费老大难
- Oracle删表报错ora00054,Oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT
- C语言system()函数
- 苹果开发者账号的那些坑
- 4.Executor执行器
- 5G/NR中RRC的三种状态(idle, active, inactive)