0

電話番号がキャリッジ リターンで区切られたテキスト ファイルがたくさんあります。私はこれらがすべて数字であることを知っています。これらすべての数値を SQL データベースのテーブルに挿入したいと考えています。しかし問題は、テキスト ファイルが最初の数字で始まることです。列名ではありません。データを挿入しようとするたびに列名がわからないということです。

これを明確にするために、私が書いた SQL を示します。

INSERT into dbo.IranCellPhoneNumbers
SELECT PostalCode = null, mobile as Number,CityId= 20
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=D:\Projects\Sepanta\ExcelImporter\ExcelImporter\bin\Debug\k1\,
'SELECT * FROM etebari.txt') 

テーブル定義を一致させたいので、postalCode を null に設定します。どの都市を意味するかはわかっているので、CityId をハードコードして設定します。しかし、問題は数値列です..テキストファイルが「モバイル」列名ではない数値で始まるため、一致しません。

このコードを機能させるには、挿入する前にこれらのテキスト ファイルを開いてリストの一番上に「モバイル」を追加する必要がありますが、これは望ましくありません。

あなたは何を提案しますか?

4

2 に答える 2

1

ここのコメントに似たものを使用してみてください

http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/cfbe56cc-70b7-462a-b106-0dd9a33304eb

つまり、これらの行に沿った何か:

"Text;Database=D:\Projects\Sepanta\ExcelImporter\ExcelImporter\bin\Debug\k1\;Extended Properties="Excel 12.0;HDR=No"

ここにさらにサンプルがあります:

http://www.codeproject.com/Articles/37055/Working-with-MS-Excel-xls-xlsx-Using-MDAC-and-Oled

または、次の DOS コマンドを実行して、見出しを自動的に追加します。

COPY HEADERFILE.TXT + YourFile.TXT OUTPUTFILE.TXT

HEADERFILE.TXT には見出しとキャリッジ リターンが含まれています。

また、国固有のテーブルを使用することは、一般的には適切なテーブル設計ではありませんが、それは別の話です。

于 2012-12-19T08:48:26.083 に答える
0

列名は必要ありません。これを行うだけです:

INSERT into dbo.IranCellPhoneNumbers
SELECT PostalCode = null, *, CityId= 20
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=D:\Projects\Sepanta\ExcelImporter\ExcelImporter\bin\Debug\k1\;HDR=NO',
'SELECT * FROM etebari.txt') 
于 2012-12-19T09:37:23.290 に答える