如何在 SQL Oracle 中有选择地在数据周围加上引号

How to selectively put quotes around data in SQL Oracle

我正在尝试将数据从我已将数据转储到的 CSV 文件加载到 table。 问题是 CSV 文件是使用 | 分隔的和一些数据有 |字符包括在内。因此,加载时出现错误,因为一些额外的 |字符被读取为一个额外的列。

我想做的是创建一个 SQL 查询来识别哪些数据行有这个 |他们里面的角色,然后在它周围加上引号。因此,不是包含 A|B 的行(读取为两列中的数据),而是“A|B”。

我本来打算只创建一个查询,其中所有列的数据都用引号引起来,但问题是我有数百万行,其中只有大约 50 行有分隔符所在的问题该列中的数据。我希望能够只在有问题的数据周围添加引号,而不是在所有数据周围添加引号。

是否有 efficient/easy 方法来完成此操作?如果需要更多详细信息,请告诉我。

我看到两个选项。

  1. 更改分隔符;使用可以在 data
  2. 中找到的字符通常是个坏主意
  3. 将值括在双引号中(正如您已经说过的)。您可以对所有列执行此操作,或仅对导致问题的列执行此操作

如果您使用 SQL Loader 将数据加载到数据库中(如果您不这样做,我建议您这样做),其选项之一是optionally enclosed by 并且您会在其中使用双引号。包含该选项的另一个选项是 external table(无论如何在后台使用 SQL Loader)。