我有一个CSV文件与以下样例行。每个字段由,分隔符分隔。但是你可以看到在双引号里有一个逗号。
如何获取用双引号括起来的,分隔字符串?不应将其视为分隔符。
请使用Oracle PL/SQL语言代码提供帮助。
12791750024,"ROSETTE","ROLLIN","6,RUE DE MALLEVILLE","95880ENGHIEN LES BAINS",35000,53.4400000000000000000000发布于 2020-04-08 15:03:59
PL/SQL?读取CSV文件?如果可以,我会推荐另一个选项-SQL*Loader。它提供了两个选项来解决您的问题;它们是
fields terminated by ','
optionally enclosed by '"'我创建了测试表,它应该接受CSV文件中的数据:
SQL> desc dq;
Name Null? Type
----------------------- -------- ----------------
ID NUMBER
NAME_1 VARCHAR2(10)
NAME_2 VARCHAR2(10)
ADDR1 VARCHAR2(25)
ADDR2 VARCHAR2(25)
NUM1 NUMBER
NUM2 NUMBER
SQL>控制文件(作为infile,您将使用CSV文件的路径,例如infile 'c:\temp\myfile.csv')。为简单起见,我将示例数据包含在begindata部分中。
load data
infile *
replace
into table dq
fields terminated by ','
optionally enclosed by '"'
trailing nullcols
(
id,
name_1,
name_2,
addr1,
addr2,
num1,
num2 decimal external "replace(:num2, '.', ',')"
)
begindata
12791750024,"ROSETTE","ROLLIN","6,RUE DE MALLEVILLE","95880ENGHIEN LES BAINS",35000,53.4400000000000000000000正在加载会话:
c:\Temp>sqlldr scott/tiger control=test17.ctl log=test17.log
SQL*Loader: Release 11.2.0.2.0 - Production on Sri Tra 8 09:03:01 2020
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Commit point reached - logical record count 1
c:\Temp>结果:
SQL> select * From dq;
ID NAME_1 NAME_2 ADDR1 ADDR2 NUM1 NUM2
------------ ---------- ---------- ------------------------- ------------------------- ---------- ----------
12791750024 ROSETTE ROLLIN 6,RUE DE MALLEVILLE 95880ENGHIEN LES BAINS 35000 53,44
SQL>给你;一切都在它的位置上。
https://stackoverflow.com/questions/61094788
复制相似问题