用SQLLDR装载数据的一次小事故

    今天用SQLLDR装载数据, 没有足够的注意, 管应用程序的人说, 我们装载的数据不对, 后面多了一个空格. 过了好一会儿我们才查到原因, 居 然是因为Windows和Linux/Unix的文本编辑器中对换行的不同处理, 在Windows中是用0x0d(13),0x0a(10)两个字符来表示的, 而Linux/Unix中只用一个字符0x0a (10)来表示. 将Windows上编辑好的文本文件以Binary方式FTP上去(或以SCP拷上去)后, 用Linux/Unix下的SQLLDR装载, 因此装载进去的数据中就多了一个字符, 如下所示:

SQL> SELECT DUMP(COL1) FROM T_TEST WHERE ROWNUM < 10;

DUMP(COL1)
----------------------------------------------------
Typ=1 Len=4: 35,32,50,13
Typ=1 Len=3: 35,49,13
Typ=1 Len=9: 45,68,69,76,69,84,69,45,13
......

    在实际的应用中, 就装载数据本身的技术而言是很简单的, 不过如果由于数据装载引起了应用服务器逻辑上的错误, 后果也是很严重的. 还好 这次发现的及时, 没有造成什么重要问题.

    又一次证明DBA细心, 考虑周到是很重要的习惯.

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • How old are you?
  • 你多大了?
  • I'm twenty-two
  • (years old). 我二十二了.
  • Mr. Smith is still in his forties.
  • 史密斯先生才四十几岁.
  • I'm two years younger than my sister.
  • 我比我姐小两岁.
  • My elder sister is one year older than her husband.
  • 我姐比他丈夫大一岁.