0

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

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

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

我很犹豫是否要去掉这些中断,因为虽然对于这个特定的应用程序并不重要,但我不想降低数据的保真度。

关于如何解决这个问题的任何想法?

谢谢!

4

3 回答 3

3

我会在文本文件之前查看 EXPDP 和 IMPDP。在 10g 中,您可以使用数据泵读取/写入外部表。见这里。您的导出变得如此简单

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 ;

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

于 2009-06-27T00:21:40.250 回答
2

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

于 2009-06-26T15:25:27.893 回答
1

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

于 2009-06-26T15:39:05.340 回答