2009-06-26 52 views
0

我是一名编写C#应用程序的前端开发人员,用于将数据从Oracle存储过程导出到文本文件中,以便以后导入到不同的Oracle数据库中。数据将用SQL Loader(sqlldr)加载,我试图理解该工具的能力,以便我可以使用SQL Loader轻松处理的格式输出文件。如何使用SQL加载程序处理数据中的换行符

我不确定如何处理列数据中的换行符。某些列是描述,可能包含换行符。我无法在SQL Loader中找到一个选项来处理数据中非常数换行符的可能性。

看来我可以使用句值来终止或开始文本文件中的记录,然后使用CONTINUEIF。然后,这给我提供了处理数据内句子值的问题。

我很犹豫,只是删除了休息时间,因为虽然对于这个特定的应用程序不是至关重要的,我并不想减少数据的保真度。

关于如何处理此问题的任何想法?

谢谢!

回答

3

我会在文本文件之前查看EXPDP和IMPDP。在10g中,您可以使用数据泵读/写外部表。请参阅here。您的出口变得那样简单

SQL> CREATE TABLE EMP_50 
2 ORGANIZATION EXTERNAL 
3 (TYPE oracle_datapump 
4 DEFAULT DIRECTORY dmp_dir 
5 LOCATION (‘emp_50.dmp')) 
6) 
7 AS SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID = 50 
8 ; 

你不必担心任何稀奇古怪的字符,日期或数字转换/格式化,甚至原始二进制数据。

+0

看起来很好吃,我会在星期一进行调查 – 2009-06-27 11:16:55

2

在这些不同的数据库之间创建数据库链接不是更容易吗?当您使用数据库链接时,不再需要编写C#应用程序。您只需使用select语句从其他数据库中选择数据。

+0

同意。不幸的是,我的公司有一个针对数据库链接的政策。 :( – 2009-06-27 11:14:30

1

我将使用SQL * Loader流记录格式(请参阅文档)和数据中不会出现的十六进制字符串分隔符。找到不会错误地表示行终止的东西不应该太难。