d*******1 发帖数: 854 | 1 我给他一个100 columns的table, 请他生成一个oracle table, 他说要一个一个column
看, 决定data type, 长度什么的, 然后才能load.
真的有这么笨吗? 难道没有什么自动的方式一下子把数据读进去? | g*****y 发帖数: 36 | 2 set long 200000
select dbms_metadata.get_ddl('TABLE','$TABLE_NAME','$SCHEMA_NAME') from dual;
自己替换$TABLE_NAME,$SCHEMA_NAME
column
【在 d*******1 的大作中提到】 : 我给他一个100 columns的table, 请他生成一个oracle table, 他说要一个一个column : 看, 决定data type, 长度什么的, 然后才能load. : 真的有这么笨吗? 难道没有什么自动的方式一下子把数据读进去?
| G********d 发帖数: 593 | | d*******1 发帖数: 854 | 4 who?
【在 G********d 的大作中提到】 : 伊是没事儿找事儿
| G********d 发帖数: 593 | 5
你家dba
【在 d*******1 的大作中提到】 : who?
| d*******1 发帖数: 854 | 6 不太理解, 我是一个大的text file 放在硬盘上, 把这个file 转成oracle table, 总
要设置一下路径把?
dual;
【在 g*****y 的大作中提到】 : set long 200000 : select dbms_metadata.get_ddl('TABLE','$TABLE_NAME','$SCHEMA_NAME') from dual; : 自己替换$TABLE_NAME,$SCHEMA_NAME : : column
| c*****d 发帖数: 6045 | 7 你开始没说清楚,他理解成另外一个意思了
如果你是要把text file中的数据load到oracle的某一个表里
用oracle自带的sqlldr就可以了
至于你们dba说要一个column一个的看
我不知道他什么意思
如果只是要确认text中的数据不会与table定义的类型冲突
我就会建一个临时表
取text file中前100条数据
用sqlldr导入这100条数据到临时表里
确认没问题后再把所有数据导入真正的数据表
另外在sqlldr的control file里加上discard file和bad file
这样有冲突的数据会存在这两个文件里
【在 d*******1 的大作中提到】 : 不太理解, 我是一个大的text file 放在硬盘上, 把这个file 转成oracle table, 总 : 要设置一下路径把? : : dual;
| d*******1 发帖数: 854 | 8 谢谢. 好象懂了, 也就是说要load 一个de novo 的data, 比须先建立一个空的table,
把里面的column的长度啊, 类型什么的建立好了, 然后在把数据读进去. 问题是这个空
table也不容易建啊, 如果有很多column的话, 数据类型什么的, 真的要一个一个看了.
如果前100行是数字的话, 就设成数字, 那么如果101行是字母呢, 那这一行岂不要丢
了.
【在 c*****d 的大作中提到】 : 你开始没说清楚,他理解成另外一个意思了 : 如果你是要把text file中的数据load到oracle的某一个表里 : 用oracle自带的sqlldr就可以了 : 至于你们dba说要一个column一个的看 : 我不知道他什么意思 : 如果只是要确认text中的数据不会与table定义的类型冲突 : 我就会建一个临时表 : 取text file中前100条数据 : 用sqlldr导入这100条数据到临时表里 : 确认没问题后再把所有数据导入真正的数据表
| c*****d 发帖数: 6045 | 9 是的,在sqlldr之前表要存在
大部分情况下,导入之前应该知道表的每个字段的含义和数据类型
否则导入这些数据有什么用呀
一种方法是把所有字段都定义成varchar2
导入之后再说
另外一种更规范的做法
我在前面的帖子里说了
sqlldr的control file可以规定bad file
可以将导入过程中类型错误的记录存在这个文件里
这样你就知道那些行被剔除出来了
比如应该是两个字段(number, varchar2)
500 abc
结果数据文件里存的是
500abc
那么对生成的bad file修改之后
把bad file作为新的数据文件进行导入
了.
【在 d*******1 的大作中提到】 : 谢谢. 好象懂了, 也就是说要load 一个de novo 的data, 比须先建立一个空的table, : 把里面的column的长度啊, 类型什么的建立好了, 然后在把数据读进去. 问题是这个空 : table也不容易建啊, 如果有很多column的话, 数据类型什么的, 真的要一个一个看了. : 如果前100行是数字的话, 就设成数字, 那么如果101行是字母呢, 那这一行岂不要丢 : 了.
| d*******1 发帖数: 854 | 10 明白了, 太感谢了.
【在 c*****d 的大作中提到】 : 是的,在sqlldr之前表要存在 : 大部分情况下,导入之前应该知道表的每个字段的含义和数据类型 : 否则导入这些数据有什么用呀 : 一种方法是把所有字段都定义成varchar2 : 导入之后再说 : 另外一种更规范的做法 : 我在前面的帖子里说了 : sqlldr的control file可以规定bad file : 可以将导入过程中类型错误的记录存在这个文件里 : 这样你就知道那些行被剔除出来了
| n*******r 发帖数: 425 | 11 depends on syntax of your txt files. but I think ur dba is doing the right
thing.
an easier way is to user toad. |
|