首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从由分隔符逗号分隔的csv文件中的记录中选择用双引号括起的字符串

从由分隔符逗号分隔的csv文件中的记录中选择用双引号括起的字符串
EN

Stack Overflow用户
提问于 2020-04-08 14:46:27
回答 1查看 23关注 0票数 1

我有一个CSV文件与以下样例行。每个字段由,分隔符分隔。但是你可以看到在双引号里有一个逗号。

如何获取用双引号括起来的,分隔字符串?不应将其视为分隔符。

请使用Oracle PL/SQL语言代码提供帮助。

代码语言:javascript
复制
12791750024,"ROSETTE","ROLLIN","6,RUE DE MALLEVILLE","95880ENGHIEN LES BAINS",35000,53.4400000000000000000000
EN

回答 1

Stack Overflow用户

发布于 2020-04-08 15:03:59

PL/SQL?读取CSV文件?如果可以,我会推荐另一个选项-SQL*Loader。它提供了两个选项来解决您的问题;它们是

代码语言:javascript
复制
fields terminated by ',' 
optionally enclosed by '"'

我创建了测试表,它应该接受CSV文件中的数据:

代码语言:javascript
复制
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部分中。

代码语言:javascript
复制
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

正在加载会话:

代码语言:javascript
复制
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>

结果:

代码语言:javascript
复制
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>

给你;一切都在它的位置上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61094788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档