通过更改表空间加载大型 csv 文件
Loading large csv file by altering tablespace
我正在笔记本电脑上的 Oracle 中加载一个大型 csv 文件(>1.5G)。并且出现了一些错误,说 "ORA-01653: table SYSTEM.CTS can't pass 1024 (in tablespace SYSTEM ) extend."
我知道我可以使用如下代码修复它:
alter tablespace SYSTEM add datafile 'XXX' size 2000m;
我的问题是:
(1) XXX 在我的代码中应该是什么?我正在使用 sqlldr 加载文件,这是我的 ctl 文件:
LOAD DATA INFILE 'C:\...cts.csv'
APPEND
INTO TABLE cts
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
Tdate,
Symbol,
Topen,
Thigh,
Tlow,
Tclose,
Tvolume
)
(2)请问2000m的大小够吗?
您可以通过添加另一个数据文件来增加 SYSTEM 表空间。在 'XXX' 的位置应该是新数据文件的位置,例如:
alter tablespace SYSTEM add datafile 'C:\oracle\OracleHome\oradata\orcl\extra_system.dbf' size 2000m;
我认为 2000 米对于一个 1.5G 的文件来说足够了,但考虑到它是 SYSTEM 表空间,您可能想在其中多放一些。
顺便说一下,将您自己的数据放在单独的表空间中而不是 SYSTEM 中可能是明智的。通过这种方式,您可以为 SYSTEM 和您的个人应用程序拥有单独的数据文件,这意味着您可以更轻松地将自己的东西移动到更大的硬盘驱动器,或备份它们。这也更加安全和易于管理,因为您不必使用可以更改 SYSTEM 表空间的用户。
编辑:数据文件是 Oracle 用来存储其数据的文件。数据库中的所有数据都将存储在这些类型的文件中,在 Oracle 安装目录中(通常)。您可以使用以下查询查看当前 SYSTEM 数据文件的名称:
SELECT FILE_NAME, BLOCKS, TABLESPACE_NAME
FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'SYSTEM';
我正在笔记本电脑上的 Oracle 中加载一个大型 csv 文件(>1.5G)。并且出现了一些错误,说 "ORA-01653: table SYSTEM.CTS can't pass 1024 (in tablespace SYSTEM ) extend."
我知道我可以使用如下代码修复它:
alter tablespace SYSTEM add datafile 'XXX' size 2000m;
我的问题是:
(1) XXX 在我的代码中应该是什么?我正在使用 sqlldr 加载文件,这是我的 ctl 文件:
LOAD DATA INFILE 'C:\...cts.csv'
APPEND
INTO TABLE cts
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
Tdate,
Symbol,
Topen,
Thigh,
Tlow,
Tclose,
Tvolume
)
(2)请问2000m的大小够吗?
您可以通过添加另一个数据文件来增加 SYSTEM 表空间。在 'XXX' 的位置应该是新数据文件的位置,例如:
alter tablespace SYSTEM add datafile 'C:\oracle\OracleHome\oradata\orcl\extra_system.dbf' size 2000m;
我认为 2000 米对于一个 1.5G 的文件来说足够了,但考虑到它是 SYSTEM 表空间,您可能想在其中多放一些。
顺便说一下,将您自己的数据放在单独的表空间中而不是 SYSTEM 中可能是明智的。通过这种方式,您可以为 SYSTEM 和您的个人应用程序拥有单独的数据文件,这意味着您可以更轻松地将自己的东西移动到更大的硬盘驱动器,或备份它们。这也更加安全和易于管理,因为您不必使用可以更改 SYSTEM 表空间的用户。
编辑:数据文件是 Oracle 用来存储其数据的文件。数据库中的所有数据都将存储在这些类型的文件中,在 Oracle 安装目录中(通常)。您可以使用以下查询查看当前 SYSTEM 数据文件的名称:
SELECT FILE_NAME, BLOCKS, TABLESPACE_NAME
FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'SYSTEM';