如何处理数据中的换行符以便使用SQL Loader导入

时间:2009-06-26 13:55:33

标签: c# oracle export sql-loader

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

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

看来我可以使用句子值来终止或启动文本文件中的记录,然后使用CONTINUEIF。然后,这向我提出了处理数据中的句子价值的问题。

我对删除休息时犹豫不决,因为虽然对于这个特定的应用程序并不重要,但我不想降低数据的保真度。

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

谢谢!

3 个答案:

答案 0 :(得分:3)

我会在文本文件之前查看EXPDP和IMPDP。在10g中,您可以使用datapump读/写外部表。见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 ;

您不必担心任何异国字符,日期或数字转换/格式,甚至原始二进制数据。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

我会使用SQL * Loader流记录格式(请参阅文档),并使用十六进制字节字符串分隔符,该分隔符不会出现在数据中。找到一些不会错误地发出行终止信号的东西应该不会太难。