我尝试使用Teradata fastload
这是the sample file that they provide on the official website
L_INDEX,L_TIMESTAMP,L_TEXT
1,2010-08-11 13:19:05.1,some text
2,2010-08-11 13:19:05.1,
3,2010-08-11 13:19:05.1,more text
4,,text
5,,
它与上述文件完美匹配
然后我只修改了第一行。因此some text
成为"some, text"
。 以下是完全合法的csv
L_INDEX,L_TIMESTAMP,L_TEXT
1,2010-08-11 13:19:05.1,"some, text" // this row was slightly modified
2,2010-08-11 13:19:05.1,
3,2010-08-11 13:19:05.1,more text
4,,text
5,,
但我收到错误消息the first column contains 4 values but only 3 values were expected
至于我明白我必须指定文字限定符 "
。我怎么能这样做?
我读过documentation但没有提到这一点。
答案 0 :(得分:2)
根据FastLoad实用程序文档,该文档与选择用于SET RECORD
命令和VARTEXT
布局的分隔符有关:
数据中出现的任何字符序列都不能用作 分隔符。除了制表符之外,不能使用任何控制字符 在分隔符中。
这可能会扩展到使用Teradata JDBC驱动程序中使用的FastLoad API机制。
修改强>
FastLoad已经存在了15年以上,并且做得很好 - 快速加载大量数据。您的其他选择是创建一个固定长度的记录,您不必依赖分隔符或创建INMOD来解析文件,因为它将流式传输到FastLoad。
其他替代方案包括MultiLoad,Teradata Parallel Transport,TPUMP或适当的ETL工具来加载您的数据。每种都有自己的优点和缺点,必须考虑提供给环境的数据格式。