選択した列をSQL Server 2008データベーステーブルにインポートするExcelスプレッドシートがあります。ウィザードはそのオプションを提供しませんでした。
簡単なコードオプションはありますか?
Sql Server 2005データベースに接続したら、オブジェクトエクスプローラーウィンドウから、テーブルをインポートするデータベースを右クリックします。 [タスク]-> [データのインポート]を選択します。これはシンプルなツールであり、受信データを適切なテーブルに「マッピング」できます。必要に応じて、スクリプトを保存して再度実行できます。
Microsoft提案 いくつかの方法:
ウィザード(DTS)が機能しない場合(そして、そうすべきだと思います)、次のようなものを試すことができます http://www.devasp.net/net/articles/display/771.html which基本的に次のようなことをすることをお勧めします
INSERT INTO [tblTemp] ([Column1], [Column2], [Column3], [Column4])
SELECT A.[Column1], A.[Column2], A.[Column3], A.[Column4]
FROM OPENROWSET
('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Excel.xls;HDR=YES', 'select * from [Sheet1$]') AS A;
これは長い道のりのように聞こえるかもしれませんが、 ExcelがINSERTを生成する を使用して、クエリアナライザーに貼り付けてテーブルを作成するSQLコードを確認することをお勧めします。
Excelファイルがサーバー上にないため、ウィザードを使用できない場合はうまく機能します
次のようなOPENROWSETを使用できます。
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;IMEX=1;HDR=NO;DATABASE=C:\FILE.xls', 'Select * from [Sheet1$]'
パスがローカルマシンではなく、サーバー上のパスであることを確認してください。
go
sp_configure 'show advanced options',1
reconfigure with override
go
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure with override
go
SELECT * into temptable
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\Documents and Settings\abhisharma\Desktop\exl\ImportExcel2SQLServer\ImportExcel2SQLServer\example.xls;IMEX=1',
'SELECT * FROM [Sheet1$]')
select * from temptable
別のオプションは、ExcelでVBAを使用し、マクロを記述してスプレッドシートデータを解析し、SQLに書き込むことです。
1つの例を次に示します。 http://www.ozgrid.com/forum/showthread.php?t=26621&page=1
Sub InsertARecord()
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stCon As String, stSQL As String
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
stCon = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=JOEY"
cnt.ConnectionString = stCon
stSQL = "INSERT INTO MyTable (Price)"
stSQL = stSQL & "VALUES (500)"
cnt.Open
rst.Open stSQL, cnt, adOpenStatic, adLockReadOnly, adCmdText
If CBool(rst.State And adStateOpen) = True Then rst.Close
Set rst = Nothing
If CBool(cnt.State And adStateOpen) = True Then cnt.Close
Set cnt = Nothing
End Sub
検証を含むデスクトップインターフェイスを備えたビジュアルツールが必要な場合は、このExcelツールをお勧めします。このツールを使用して、マルチユーザーデータ編集タスクを作成したり、任意のソースからSQLサーバーにデータを貼り付けたりすることもできます。
Excelスプレッドシートを検証してSQL Serverデータベースにインポートする方法:
「ウィズ」では、「SQL Serverインポートおよびエクスポートウィザード」について話していると思います。 (私もかなり新しいので、ほとんどの質問は理解できませんが、ほとんどの回答はわかりませんが、これは得られると思います)。スプレッドシートまたはそのコピーを取得できなかった場合は、インポートしたくない列を削除してからウィザードを使用しますか?
私はいつもそれで必要なことをする能力を見つけましたが、私はSQL Server 2000でしかありません(他のバージョンの違いはわかりません)。
編集:実際に私は今それを見ていて、既存のテーブルのどの行にどの列をマップしたいかを選択できるようです。 [ソーステーブルとビューの選択]画面で、使用しているデータシートを確認し、[宛先]を選択して、[編集...]ボタンをクリックします。そこから、Excel列とそれをマップするテーブル列を選択できます。
Microsoft Accessは別のオプションです。 Excelスプレッドシートをインポートする(ウィザードが使用可能)および ODBC経由でSQL Serverデータベーステーブルにリンクする のマシン上にローカルでAccessデータベースを作成できます。
その後、ExcelスプレッドシートからSQL Serverテーブルにデータを追加するアクセスでクエリを設計できます。
私が今まで使用した中で最高のツールは http://tools.perceptus.ca/text-wiz.php?ops=7 試しましたか?
Excel + SQLCMD + Perl = exceltomssqlinsert
また、MSSQL dbのフロントエンドとしてExcelを使用できます。生成された各sql挿入ファイルの先頭にある切り捨てテーブルに注意してください...
インポートウィザードはそのオプションを提供します。このオプションを使用して、インポートするデータの独自のクエリを作成するか、データのコピーオプションを使用して[マッピングの編集]ボタンを使用し、インポートしない列を無視できます。
DTS(現在はSQLサーバーのインポートおよびエクスポートウィザードとして知られています)を使用しました。これを使用しました tutorial Sql 2008およびExcel 2010(14.0)でもうまく機能しました
これが役立つことを願っています
-D
まず、32ビットバージョンのインポートウィザードを試してください。これは、サポートされているインポート形式がはるかに多いことを示しています。
背景:すべては、Office(ランタイムエンジン)のインストールに依存します。
Office 2007以降をインストールしていない場合、インポートWizard(32ビット)では、Excel 97-2003(.xls)ファイルのみをインポートできます。
Office 2010とgeater(64ビットでもお勧めしません)がインストールされている場合、インポートWizardはExcel 2007+(.xlsx)ファイルもサポートします。
ランタイムの概要を確認するには、 「Microsoft.ACE.OLEDB.12.0」プロバイダーがローカルマシンに登録されていません を参照してください。