Oracle SQL加载程序位置
SQL加载器新手,我对Oracle SQL加载程序位置,oracle,sql-loader,Oracle,Sql Loader,SQL加载器新手,我对位置有点困惑。 让我们使用以下示例数据作为参考: Munising 49862 MI Shingleton49884 MI Seney 49883 MI 下面是load语句: LOAD DATA INFILE 'zipcodes.dat' REPLACE INTO TABLE zipcodes ( city_name POSITION(1) CHAR(10), zip_code POSITION(*) CHAR(5),
位置有点困惑。
让我们使用以下示例数据作为参考:
Munising 49862 MI
Shingleton49884 MI
Seney 49883 MI
下面是load
语句:
LOAD DATA
INFILE 'zipcodes.dat'
REPLACE INTO TABLE zipcodes (
city_name POSITION(1) CHAR(10),
zip_code POSITION(*) CHAR(5),
state_abbr POSITION(*+1) CHAR(2)
)
在load语句中,city\u name
位置为1。SQLLDR如何知道它的终点?CHAR(10)是这里的诀窍吗?计算“Munising”后面的两个空格,它有10个字符
还有,为什么zip_code
会被赋予CHAR,即使它只包含数字
谢谢是的,当未指定结束位置时,它是从数据类型派生的。这就解释了POSITION子句
- 城市名称位置(1)字符(10)
此处数据字段的起始位置为1。未指定结束位置,但从数据类型(即10)派生
- 邮政编码位置(*)字符(5)
此处*指定,数据字段紧跟在前一个字段之后,长度应为5字节
- 州缩写位置(*+1)字符(2)
此处+1指定与上一个字段的偏移量。Sqlloader跳过1个字节,然后读取从char(2)数据类型派生的下2个字节
至于zipcode为什么是CHAR,邮政编码被认为只是一个固定长度的字符串。你不会对它做任何算术运算。因此,CHAR是合适的。
还有,看一看。在控制文件中,您告诉SQL*Loader如何解释数据。它可以不同于表结构。在此示例中,您还可以为邮政编码指定外部整数。我们需要三个文本文件和一个批处理文件来加载数据:
假设您的文件位置为“D:\loaddata”
输入文件“D:\loaddata\abc.CSV”
1.D:\loaddata\abc.bad--空
2.D:\loaddata\abc.log--空
3.D:\loaddata\abc.ctl“在下面编写代码”
D:\loaddata\abc.bat---用于执行
sqlldr db_user/db_passward@your_tns control=D:\loaddata\abc.ctl log=D:\loaddata\abc.log
双击“D:\loaddata\abc.bat”文件后,数据将加载到oracle表中。如果有任何错误,请检查“D:\loaddata\abc.bad”和“D:\loaddata\abc.log”文件
sqlldr db_user/db_passward@your_tns control=D:\loaddata\abc.ctl log=D:\loaddata\abc.log