有.sql格式的转储,要导入到服务器。从工具只有sqlplus。问题是sqlplus要求在每个CREATE TABLE为/
之后且仅在/
开始创建表之后。转储看起来像这样:
DROP TABLE ...;
CREATE TABLE ...;
INSERT INTO ...;
...
DROP TABLE ...;
CREATE TABLE ...;
INSERT INTO ...;
...
...
当涉及INSERT时,没有插入任何内容,因为没有创建表。编辑文件是不可能的,因为它是一个大(~700 MB)。如何导入转储?
答案 0 :(得分:2)
给定文件/tmp/foo.sql:
CREATE TABLE foo (
a integer primary key,
b integer
);
INSERT INTO foo VALUES (1, 2);
运行sqlplus:
$ sqlplus user/pass@db @/tmp/foo
SQL*Plus: Release 11.2.0.2.0 Production on Thu Oct 25 10:54:39 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle9i Release 9.2.0.4.0 - 64bit Production
JServer Release 9.2.0.4.0 - Production
Table created.
1 row created.
SQL>
听起来你已经在某处设置了分隔符/
。将其更改回;
。
如果您需要编辑文件,可以使用perl -p -E "s/pattern/replacement/" oldfile.sql > newfile.sql
或类似文件进行编辑。 (或者,老实说,许多编辑器可以在具有许多GB RAM的现代机器上处理700MB文件。)