当前位置: 首页 > 知识库问答 >
问题:

当只允许DML时将CSV文件导入Oracle

邓焱
2023-03-14

我的数据库托管在服务器上,我只能向其发出 DML 语句。

有没有一个SQL命令(适用于Oracle)可以用来将CSV文件中的条目填充到一个表中?CSV文件和表中的列是相同的,但是如果有一个命令版本,我可以决定文件中的哪个字段到哪个列,那就更好了。

此外,除了OracleSQLDeveloper之外,我无法安装任何东西,因此我需要的是可以从那里运行的SQL代码。我相信SQL*Loader和外部表在这种情况下没有帮助。

共有2个答案

鲍钊
2023-03-14

直接复制自Oracle 9i文档:

CREATE TYPE student_type AS object (
student_no CHAR(5),
name CHAR(20))
/

CREATE TABLE roster (
  student student_type,
  grade CHAR(2));

还假设有一个外部表定义如下:

CREATE TABLE roster_data (
  student_no CHAR(5),
  name CHAR(20),
  grade CHAR(2))
  ORGANIZATION EXTERNAL (TYPE ORACLE_LOADER DEFAULT DIRECTORY ext_tab_dir
                         ACCESS PARAMETERS (FIELDS TERMINATED BY ',')
                         LOCATION ('foo.dat'));

要从roster_data加载表名册,您需要指定类似于以下内容:

INSERT INTO roster (student, grade)
  (SELECT student_type(student_no, name), grade FROM roster_data);

外部表访问驱动程序(又名ORACLE_LOADER)接受一系列选项来处理许多不同的情况:固定宽度、CSV、endianness(二进制数据)、分隔符...再次,有关详细信息,请参阅文档。

...如果有一个版本的命令,我可以决定文件中的哪个字段转到哪一列,那就更好了。

正如您现在所理解的,外部表的处理方式与任何其他表一样。因此,您可以像往常一样在<code>INSERT…SELECT…</code>语句中动态重新排序和/或执行计算。

柴兴贤
2023-03-14

使用oracle外部表

create directory ext_data_files as 'C:\'; -- create oracle directory object point to the directory where your file resides, using this we will fetch the csv data

create table teachers_ext (
      first_name     varchar2(15),
      last_name      varchar2(15),
      phone_number   varchar2(12)
)
organization external (
  type oracle_loader
  default directory ext_data_files
  access parameters (fields terminated by ',' )
  location ('teacher.csv')
)
reject limit unlimited
/

您的csv将如下所示:

约翰,史密斯,8737493

Foo, 酒吧, 829823832

 类似资料:
  • 我在Ubuntu 18.04和php7.3上使用phpmyadmin,当我尝试导入或导出文件时,会显示以下错误: ./libraries/plugin_interface.lib.php#551 count()中的警告:参数必须是数组或实现可计数的对象,所以我转到这个文件(plugin_interface.lib.php)并尝试将$options强制转换为数组,但仍然不起作用

  • 问题内容: 我正在寻找使用导入文件到SQL Server的帮助,我有几个基本问​​题。 问题: CSV文件数据的中间(例如:描述)之间可能有(逗号),那么如何进行导入处理这些数据? 如果客户端从Excel创建CSV,则用逗号括起来的数据(用双引号引起来)(如下例所示),那么导入如何处理呢? 我们如何跟踪某些行是否有不良数据,哪些导入会跳过?(导入会跳过不可导入的行) 这是带有标题的示例CSV: 和

  • 我正在寻找有关使用将文件导入SQL Server的帮助,我没有什么基本问题。 下面是带有头部的示例CSV: 和要导入的SQL语句:

  • 问题内容: 我想将csv文件导入到mysql中。 http://www.tech- recipes.com/rx/2345/import_csv_file_direct_into_mysql/ 但是csv中的列名称与数据库表中的列名称不同,我该怎么办?我想以编程方式来做。 问题答案: 您可以创建一个脚本来解析您的csv文件并将数据放入db。 就像是:

  • 本文向大家介绍R导入.csv文件,包括了R导入.csv文件的使用技巧和注意事项,需要的朋友参考一下 示例 使用base R导入 可以使用read.csv来包装逗号分隔的值文件(CSV),该文件可以包装read.table,但可用于sep = ","将分隔符设置为逗号。 用户友好选项file.choose允许浏览目录: 笔记 与不同read.table,read.csv默认为header = TRU