2017-06-14 11 views
3

AzureでホストされているSQL Serverデータベースのテーブルにcsvファイル(sqlserver-dba-csv.txt)をインポートします。Azure Azureファイルサービスの場所からAzure SQL ServerにAzure一括インポートファイル

このファイルは、Azureファイルサービス(ロケーションアドレス: 'https://XXXXXXXXXXX.file.core.windows.net/XXXXXXXXXXX/sqlserver-dba-csv.txt')にあります。これは、ローカルマシン上のマップされたドライブです。

最終的に私はこれをトリガーによっていくらか自動化したいと思いますが、今のところ、SQLサーバー上のテーブルにデータをインポートして、プロセスが動作することを証明したいだけです。こののSQLServer-DBA-csv.txtファイルの

内容は以下のとおりです。

1,James Brown,blue 
2,Prince,red 
3,Rick James,yellow 

私はSSMSで使用していたコードは次のとおりです。

**--create a table 
CREATE TABLE musicians_csv (
musician_id INT, 
full_name VARCHAR(50), 
colour VARCHAR(20) 
) 
GO 
--bulk insert csv into a SQL Server table 
BULK 
INSERT musicians_csv 
FROM 'https://XXXXXXXXXXX.file.core.windows.net/XXXXXXXXXXX/sqlserver-dba-csv.txt' 
WITH 
(
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
) 
GO 
--Verify data inserted 
SELECT * 
FROM musicians_csv 
GO 
--Drop the table 
DROP TABLE musicians_csv 
GO** 

私が受け取るエラーメッセージは次のとおりです。

メッセージレベル4861、レベル1、状態10、行番号 "https:/xxxxxxxxx.file.core.windows.net/xxxxxxxxx /sqlserver-dba-csv.txt " を開くことができませんでした。オペレーティングシステムのエラーコード(null)。

(0行(複数可)の影響を受ける)

私は、ファイルの場所のフォーマットが間違っていると思われるが、検索後のいずれかの解決策を見つけることができませんでした。

また、SQL ServerがAzure Cloudにある場合でも、ローカルマシン上のファイルを参照してインポートすることができます。たとえば、「C:\ Users \ user.name \ Desktop \ SQLServerの-DBA-csv.txtは」

すべてのヘルプは大幅にこのリンクはあなたを助けるべき

+0

この答えをチェックアウト、私はここでBLOBを使用しています。https://stackoverflow.com/questions/44116289/migrating-to-azure-sql-bcp/44116380#44116380 – TheGameiswar

+0

ます。https://ドキュメントMicrosoft。com/ja-jp/sql/t-sql/statements/create-external-data-source-transact-sql – david25272

答えて

0

を感謝: https://azure.microsoft.com/en-us/updates/preview-loading-files-from-azure-blob-storage-into-sql-database/

あなたのブロブ場合は、共有アクセス署名で(外部データソースを作成する必要があります保存は公開されていません)

+0

こんにちは、スタックオーバーフローへようこそ。一般的に、リンクのみの回答は、ほとんどの質問を解決するためのコンテキストを提供していないため、不満を表明します。より良い回答を書くための詳細については、https://stackoverflow.com/help/how-to-answerをご覧ください。 – SandPiper

+0

これは役に立ちます - Azureファイルサーバーをローカルマシンにマップしてインポートをトリガーするのは簡単で、Azureファイルサーバーを使用してAzureファイルサービスを使用して外部データソースを作成することができますか? 。私は空白のBLOBストレージをローカルのWindowsマシンにマップすることができないことを発見したので、BLOBストレージでこれを行う方法を理解しなければなりません。 –

1

セキュリティ上の問題が発生している可能性があります。パブリックアクセスのためにファイルが正常に宣言されていない場合、Azure SQLはインポートしようとしているファイルにアクセスできません。この度

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'A-$tr0ng|PaSSw0Rd!'; 
GO 

CREATE DATABASE SCOPED CREDENTIAL [CSV-Storage-Credentials] 
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', 
SECRET = '<shared-access-signature for "csvimportdemo" blob storage here>'; 
GO 

CREATE EXTERNAL DATA SOURCE [CSV-Storage] 
WITH 
( 
    TYPE = BLOB_STORAGE, 
    LOCATION = 'https://csvimportdemo.blob.core.windows.net', 
    CREDENTIAL= [CSV-Storage-Credentials] 
); 

:もちろん

多分あなたは、CREATE CREDENTIALコマンドを使ってAzureのSQLにそれにアクセスするための資格情報を格納する必要がありますので、誰もが利用できるようにファイルを設定する必要はありませんあなたは、その後BULKコマンド経由でファイルにアクセスすることができます行われます:あなたはAzureの機能を使用してインポートも自動化(私は投稿のサンプルコードから取られているところから)githubの上で完全に動作するサンプルを、見つけることができます

SELECT 
    FileId = ' + CAST(@fid AS NVARCHAR(9)) + ', 
    FirstName, 
    LastName, 
    TwitterHandle 
FROM OPENROWSET(
    BULK '<your file here>', 
    DATA_SOURCE = 'CSV-Storage', 
    FIRSTROW=2, 
    FORMATFILE='<your format file here>', 
    FORMATFILE_DATA_SOURCE = 'Storage') as t 

https://github.com/yorek/AzureFunctionUploadToSQL/blob/master/SQL/create-objects.sql

関連する問題