oracle导入数据报错处理
报错1:ORA-01756: quoted string not properly terminated 字符集编码不一致造成的中文内容无法插入 查询当前数据库的字符编码设置: SQL select * from v$nls_parameters T WHERE t.PARAMETER = NLS_LANGUAGE or t.PARAMETER = NLS_CHARACTERSET; 或者 SQL
报错1:ORA-01756: quoted string not properly terminated
字符集编码不一致造成的中文内容无法插入
查询当前数据库的字符编码设置:
SQL> select * from v$nls_parameters T WHERE t.PARAMETER = ‘NLS_LANGUAGE’ or t.PARAMETER = ‘NLS_CHARACTERSET’;
或者
SQL> select userenv(‘language’) from dual;
查询客户端字符集编码
linux下:
echo $NLS_LANG
Windows下:
echo %NLS_LANG%
设置客户端字符集编码:
LINUX下:
# 常用unicode字符集
export NLS_LANG=american_america.AL32UTF8
# 常用中文字符集
可以编辑 bash_profile 文件进行永久设置
vi .bash_profile
export NLS_LANG=”SIMPLIFIED CHINESE_CHINA.ZHS16GBK”
or export NLS_LANG=”Simplified Chinese_china”.ZHS16GBK
# 使 bash_profile 设置生效
source .bash_profile
Windows下:
# 常用中文字符集
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
# 常用unicode字符集
set NLS_LANG=american_america.AL32UTF8
可以通过修改注册表键值永久设置
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG
修改服务器端字符集:
SQL>conn / as sysdba;
若此时数据库服务器已启动,则先执行 SHUTDOWN IMMEDIATE 命令关闭数据库服务器,然后执行以下命令:
SQL>shutdown immediate;
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;
ORA-12712: new character set must be a superset of old character set
提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:需使用INTERNAL_USE可以跳过超集的检查
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
ERROR at line 1:
ORA-12721: operation cannot execute when other sessions are active
若报以上错误则:select sid,serial#,username,machine from v$session;查看有哪些SESSION,然后
alter system kill session ‘sid’serial#’ immediate;然后
alter system kill session ’158,7′ immediate;如这样
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP;
报错2:插入字段含有&(安特)符号
方法一:
SQL> show define;
define “&” (hex 26)
SQL> set define off;
SQL> show define;
define OFF
这个是Oracle里面用来识别自定义变量的设置,在SQL*PLUS下要将其关闭。
注意:如果是在TOAD中执行,建议在每一个要导入的脚本第一行加上前面那句关闭define的话,否则当你导入第二个含有特殊字符的脚本的时候,又会出错。
如果是在SQL*PLUS中执行,则只需要设置一次define OFF,后面就可以连续导入了。直到你重新设置define ON为止。
方法二:
在SQL语句中将’&’替换成chr(38),因为chr(38)是‘&’的ASCII码
SQL> Select ‘Tom’ || chr(38) || ‘Jerry’ from dual;
方法三:
分拆原来的字符串
SQL> Select ‘Tom’ || ‘&’ || ‘Jerry’ from dual;
报错3:插入字段含有’(单引号)符号
方法一:使用转义字符
SQL > Select ‘test’ || ”” from dual;
注意:这里的””四个单引号是什么意思呢?首先第一个和最后一个都是Oracle中的字符串连接符,这个没有异议。那么第二个’和第三’又表示什么意思呢?第二个’是一个转义字符
第三个’才是我们真正的内容
方法二:
同样是使用转义字符,只不过方式不同而已
SQL > Select ‘test ”’ from dual;
注意:这里的第二个,第三个’就是我们上面方法一中提到的转义符和真正的内容
方法三:
在SQL中将’替换成chr(39),因为chr(39)是’的ASCII码
SQL > Select ‘It’ || chr(39) || ‘fine’ from dual;
报错4:ORA-00001: unique constraint violated
主键有唯一性约束,不能重复插入相同的数值。
原文地址:oracle导入数据报错处理, 感谢原作者分享。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









ストアドプロシージャは、データベースに保存できるSQLステートメントのセットであり、別のユニットと繰り返し呼ぶことができます。パラメーター(in、out、inout)を受け入れ、コードの再利用、セキュリティ、パフォーマンス、モジュール性の利点を提供できます。例:ストアドプロシージャを作成して、2つの数値の合計を計算してOUTパラメーターに保存します。

データインポート方法:1。SQLLOADERユーティリティを使用します。データファイルを準備し、制御ファイルを作成し、SQLLoaderを実行します。 2。IMP/EXPツールを使用します。データをエクスポートし、データをインポートします。ヒント:1。ビッグデータセットに推奨されるSQL*ローダー。 2。ターゲットテーブルが存在する必要があり、列定義が一致します。 3。インポート後、データの整合性を検証する必要があります。

Oracle Environment Variable Configuration Guide:Oracle_home Environment変数を作成し、Oracle Home Directoryを指します。 Oracle Binary DirectoryをPath Environment変数に追加します。 TNS_ADMIN環境変数を設定します(ファイルがTNSを使用して命名されている場合)。環境変数の設定を検証して、出力が設定変数を表示していることを確認します。

ALTER TABLEステートメントを使用して、特定の構文は次のとおりです。ALTERTABLE TABLE_NAME add column_name data_type [constraint-clause]。 WHERE:table_nameはテーブル名、column_nameはフィールド名、data_typeはデータ型、制約条項はオプションの制約です。例:テーブルの従業員を変更すると、電子メールvarchar2(100)は、従業員テーブルに電子メールフィールドを追加します。

主キーは、テーブル内の各行を一意に識別する特別な列または列の組み合わせです。テーブル内のレコードが一意であり、次のように作成できることが保証されます。AlterTableステートメントを使用してテーブル名を指定します。プライマリキーキーワードを追加して、列名を追加して、プライマリキーとして指定します。主なキーの制約は、データの一意性を確保し、クエリ速度を改善し、レコードの重複を防ぎ、テーブル結合を簡素化するのに役立ちます。

Oracle Garbledの問題は、データベース文字セットをチェックしてデータと一致するようにすることで解決できます。データベースに一致するようにクライアント文字を設定します。データを変換するか、列文字セットを変更してデータベース文字セットに一致させます。 Unicode文字セットを使用して、マルチバイト文字セットを避けます。データベースとクライアントの言語設定が正しいことを確認してください。

Oracleは複数の重複排除クエリメソッドを提供します。個別のキーワードは、各列の一意の値を返します。 Group by Clauseは、結果をグループ化し、各グループの非繰り返し値を返します。一意のキーワードは、一意の行のみを含むインデックスを作成するために使用され、インデックスをクエリすると自動的に重複排除が行われます。 row_number()関数は、一意の数値を割り当て、行1のみを含む結果をフィルタリングします。min()またはmax()関数は、数値列の非繰り返し値を返します。交差する演算子は、2つの結果セットの共通値を返します(複製なし)。

Oracle Tablespaceサイズを照会するには、次の手順に従ってください。クエリを実行して、TableSpace名を決定します。DBA_TABLESPACesからTableSpace_Nameを選択します。クエリを実行してテーブルスペースのサイズをクエリします:sum(bytes)をtotal_size、sum(bytes_free)asavail_space、sum(bytes) - sum(bytes_free)as sum(bytes_free)as dba_data_files from tablespace_
