SQL加载器中的注释,CSV文件

SQL加载器中的注释,CSV文件,csv,sql-loader,Csv,Sql Loader,我正在生成一个CSV文件,该文件将使用sqlldr读取到数据库中,我想知道是否有兼容的注释可以放在该文件中 # Currently I am using comments of this format # and I want to add some information about where the file came from 但是,sqlldr将这些列报告为由于数据错误而未加载的行,这可能会让任何试图调试导入过程的用户感到困惑 我已经看过了,但没有提到任何评论。对的回答还概述了CSV

我正在生成一个CSV文件,该文件将使用
sqlldr
读取到数据库中,我想知道是否有兼容的注释可以放在该文件中

# Currently I am using comments of this format
# and I want to add some information about where the file came from
但是,
sqlldr
将这些列报告为由于数据错误而未加载的
行,这可能会让任何试图调试导入过程的用户感到困惑

我已经看过了,但没有提到任何评论。对的回答还概述了CSV文件没有其自身标准的注释,但该标准是由读取该文件的应用程序定义的(在本例中为
sqlldr


是否有一种兼容的注释类型可以与
sqlldr
一起使用?

我认为sqlldr不允许在数据中添加注释,但您可以通过在控制文件中指定一个
with
子句来绕过它,该子句只加载第一个字符不等于
“#”的行。请注意,
“#”
必须始终位于同一位置,而不是行中的任何位置

编辑:我刚试过,效果很好

数据文件:

# This is a comment in the data file
1|\a\ab\|do not "clean" needles|@
# This is a comment in the data file
2|\b\bg\|wall "69" side to end|@
# This is a comment in the data file
控制文件:

load data
infile 'x_test.dat'
into table X_TEST
when (1:1) <> '#'
fields terminated by "|" OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
  col1,
  col2,
  col3
)
加载数据
填充“x_测试数据”
进入表X_检验
当(1:1)#
以“|”结尾的字段(可选地包含在“%”中)
尾随零线
(
col1,
col2,
可乐
)

谢谢你的回答!我看到日志文件中的记录被丢弃了。但是,尽管忽略这些记录很好,但这可能仍然会让用户感到困惑。你是否也看到了
记录1:discarded-failed all WHEN子句
?或者我需要再处理一些我的CTL文件吗?我同意,但我认为情况就是这样。我建议不要在数据中添加注释,但可以创建一个日志文件或日志表条目,与包含该文件信息的文件一起使用。您可以随时编写自己的程序来读取该文件并加载数据。如果您找到更好的方法,请发回邮件!您是对的,更重要的是数据是过程sed很干净,如果我必须牺牲一些元数据,那也没关系。你不必牺牲元数据,只要想出一种不同的方法来处理它,以满足你的需要。例如,我们使用一个表驱动的包装程序,它基于文件的条目构建一个sqlldr命令行,在运行它的同时保留统计信息,然后将有关负载的信息记录到load_log table(加载日志表)。经过的时间、文件中的记录、插入的记录等。数据表中的每一行都印有load_log table条目ID(加载日志表条目ID),以便进行快速故障排除。它确实是一个穷人的ETL工具。您必须决定是否值得为您的需要而费心。为数据文件创建命名约定,以帮助识别其名称来源。