問題タブ [external-tables]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hive - 外部テーブルからデータベースへのデータのコピー
外部テーブルにデータがあります。現在、外部テーブルからデータベース内の新しく作成されたテーブルにデータをコピーしています。データベース内のテーブルはどのようなテーブルになりますか? 管理対象テーブルですか、それとも外部テーブルですか? この質問の背後にある概念を理解するためにあなたの助けが必要です
ありがとう、マダンモハンS
oracle - 外部テーブル -oracle への挿入から EOL 区切り文字を削除する
アレックスの提案として、外部テーブルのrowdata列のnotrimを含めました(これは この質問の続きです)、
しかし、現在、行末文字も行データ列に追加されています。つまり、行末 (CR-LF) も行データの最後に結合されています。
ファイルサイズが約1GBなので、 substr() や translate() は使いたくありません。
私の外部テーブル作成プロセス:
行末文字を削除するために追加できる他のパラメーターはありますか。ありがとう。
編集1:
私のファイル:
末尾にスペースがある最初の行のいくつかは、末尾にスペースが
あるいくつかの 2 行目
私のExtテーブル:
より明確にするために、Javaで説明します(列の値を string に割り当てると、次のようになります)、
notrim なし:
notrim を使用:
私がしたいこと:
トリムが指定されていないため、区切り文字も行データの一部です。
EDIT2:
行末: CRLF
プラットホーム :
Oracle データベース 12c Enterprise Edition リリース 12.1.0.1.0 - 64 ビット
本番 PL/SQL リリース 12.1.0.1.0 - 本番
「CORE 12.1.0.1.0 Production」TNS for Solaris : バージョン 12.1.0.1.0 -
プロダクション NLSRTL バージョン 12.1.0.1.0 - プロダクション
SELECT DUMP(ROW_DATA,1016) FROM EXT_TABLE WHERE ROWNUM = 1;
Typ=1 Len=616 CharacterSet=AL32UTF8: 41,30,30,30,30,30,30,30,30,30,30,31,30,30,30,30,37,36,36,36, 44,30,30,30,30,31,32,35,30,38,31,36,32,35,30,38,31,36,31,33,34,37,30,39,44, 42,20,41,30,36,31,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,4d,59,52,20, 32,5a,20,30,31,36,30,30,30,31,32,31,32,33,34,30,30,30,30,30,30,30,30,30,30, 30,30,30,30,30,30,52,49,42,46,50,58,30,30,30,31,30,30,30,30,30,30,30,30,31, 30,36,32,38,30,31,30,32,30,30,47,20,20,20,20,53,20,20,30,30,30,30,30,30,30, 30,30,30,30,20,20,20,20,20,20,20,4e,39,32,37,32,20,20,20,20,20,20,30,30,30, 30,30,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,30,30,39,39,38,54,45,53, 54,52,52,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,54,45,53,54,4f,50,44,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,54,45,53,54,54,52, 41,4e,53,49,44,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,54,45,53,54,52,52,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20,54,45,53,54,4f,50,44,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,54,45,53,54,54,52,41,4e,53, 49,44,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,日
Len は 615 である必要があります
sql-server - Azure SQL 外部テーブルから "INSERT INTO" を実行できません
私の Azure SQL DB には、外部テーブル (これtableName_origData
を呼び出しましょう) があり、別のテーブルがありますtableName
。
tableName
CREATE
(元の場所にある)から生成されたスクリプトを使用して作成されたtableName_origData
ので、すべての列の型が同一であることを確認できます。
ただし、実行すると
次の例外が発生します。
ラージ オブジェクト列のサポートは、nvarchar(max) データ型のみに制限されています。
Azure SQL のデータ型を理解している限り、NVARCHAR(MAX) よりも大きいものはありません。さらに、メッセージは NVARCHAR(MAX)がサポートされていることを意味します (そして、同じスクリプトが NVARCHAR(MAX) を含む他のテーブルでも機能することがわかります)。
この例外の原因と、そのデータを同一のテーブルに挿入するために何をする必要があるかを誰かがよりよく説明できますか?
テーブルで使用されるすべての列タイプのリストを次に示します。
BIGINT
×3
NCHAR(20)
×1
NVARCHAR(45)
×5
NVARCHAR(100)
×14
NVARCHAR(MAX)
×10
windows - Oracle 外部テーブルを使用した CSV ファイルの作成日へのアクセス
状況
Oracle データベース サーバー (2008 R2 Enterprise Edition Windows サーバー) に、inventory.csv という名前の CSV ファイルがあります。この CSV ファイルは、Oracle 外部テーブルとして使用されます。
1 時間ごとに、スケジュールされたタスク (Windows タスク スケジューラ) が .bat ファイルを実行します。このファイルは、更新されたバージョンの inventory.csv をコピーして、元のファイルを上書きします。
その後、データはレポート アプリケーションによって使用されます。
問題
inventory.csv のデータを使用するアプリケーションは、データが最後に更新されたのがいつかを知る方法がありません。
理想的には、「最終更新日」がテーブルの列としてアクセスできるようにしたいと考えています。
考えられる解決策の 1 つは、現在の日付/時刻のログを別のファイルにトリガーし、それを外部テーブルとしても参照することです。ただし、このソリューションには可動部分が多すぎるため、可能であれば、よりシンプルなものを希望します。
CSVファイル自体がいつ作成されたかを知っていることは知っています...Oracle外部テーブルがCSVファイルのプロパティから「作成日」を読み取る方法があるかどうか疑問に思っていますか?
または他のアイデアはありますか?
sql-server - 外部テーブルから外部テーブルの正確なコピーにデータをコピーできません
SQL Azure DB でテスト DB 環境を構築する際に、元のプロトタイプ DB から生成された CREATE TABLE スクリプトを使用して新しい DB を動的に生成します。
これらのテーブルの一部はプロトタイプ DB からのデータを必要とするため、これらのそれぞれに対して外部テーブルを作成し (プロトタイプ DB のテーブルを参照)、外部テーブルからデータを取得して正確なコピーに挿入する INSERT INTO クエリを実行します。テストDBで。
ここで重要な点は、プロトタイプ DB に組み込まれているスクリプトを使用して、新しいテーブルと外部テーブルの両方が動的に生成されることです。したがって、新しいテーブルと外部テーブルは、プロトタイプ DB の正確なコピーである必要があります。
ただし、これらのテーブルの 1 つで、例外が発生しました。
ラージ オブジェクト列のサポートは、nvarchar(max) データ型のみに制限されています。
問題のテーブルには NVARCHAR (MAX) を超えるもの (TEXT など) はありませんでしたが、10 個の NVARCHAR (MAX) 列がありました。したがって、これらの列を NVARCHAR (4000) に変更し、プロセスを再度実行しました。
次の例外が発生しました。
外部テーブルの列 'my_column_name' のデータ型は、外部ソースに存在する基になるスタンドアロン テーブルまたはシャード テーブルの列のデータ型とは異なります。
プロトタイプDB、外部テーブル、および新しいテーブルの列タイプを更新して確認したところ、これらすべてがデータタイプがNVARCHAR(4000)であることを示しています。
では、なぜデータ型が異なると教えてくれるのでしょうか?
以前は列が NVARCHAR (MAX) だったのは偶然ですか?
oracle - ヘッダー行またはスター(*)に基づくOracle外部表の列
で終わる約100列のテキストファイルがあります"|"
。そして、このファイルからいくつかの列を外部テーブルに取得する必要があります。したがって、私が持っている解決策は、ACCESS PARAMETERS
セクションの下のすべての列をファイルと同じ順序で指定することです。Create テーブル定義で必要な列を定義します。または、作成テーブル自体ですべての列を同じ順序で定義します。
クエリですべての列を定義しないようにすることはできますか? 最初の行名自体に基づいて列を取得することは可能ですか?最初の行として列名がある場合。
select *
または、少なくとも各列に言及せずに( ) のようなすべての列を取得することは可能ですか? 以下は私が使用するコードです
oracle - Oracle 外部テーブルはいつ使用できますか
外部テーブルと sqlloader を比較する多くの投稿を読みましたが、主な利点は、外部テーブルの SQL で利用可能な多くのオプションを使用して選択クエリを最適化することです。しかし、大きなファイル (1.5 GB) を選択するのは難しいと感じています。select count(*) 自体の実行には数分かかります。
私の計画は、このデータからいくつかの選択ステートメントを実行して、このデータに基づいてレポートを生成することです。これは、データを内部テーブルにロードするよりも良い考えでしょうか。
外部テーブルの理想的な使用法は、ファイルに対して SELECT を実行して、クリーンアップを実行し、内部テーブルにロードすることです。ファイルを長期間テーブルとして使用することは意図されていません (特に大きなファイルの場合)。私が間違っている場合は修正してください。