1

株価情報を含む CSV ファイルがあります。SQLに関しては初心者ですが、多くの調査を行い、機能すると思われるコードを思いつきました。しかし、そうではありません。私はずっとエラーが発生します....

USE ShakeOut 
GO
CREATE TABLE CSVTest1
(Ticker varchar(10),
dateval smalldatetime),
timevale time(),
Openval varchar(10),
Highval varchar(10),
Lowval varchar(10),
Closeval varchar(10),
Volume varchar(10),
)
GO

BULK
INSERT CSVTest1
FROM 'c:\TEST.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
--Check the content of the table.
SELECT *
FROM CSVTest1
GO
--Drop the table to clean up database.
DROP TABLE CSVTest1
GO

私の CSV ファイルには 03:15:00 PM の timevalue が含まれていますが、それをテーブルに設定する方法がわかりません。私が思う他の値はほぼ正しいと思います。これが私の csv ファイルのサンプルです。

5/1/2009,9:30:00 AM,18.21,18.45,18.21,18.32,32163
5/1/2009,9:35:00 AM,18.33,18.34,18.27,18.29,36951
5/1/2009,9:40:00 AM,18.29,18.38,18.25,18.37,53198
5/1/2009,9:45:00 AM,18.38,18.4,18.28,18.285,49491

SQL Management Studio でのエラー メッセージは次のとおりです。

Msg 102, Level 15, State 1, Line 4 Incorrect syntax near ','. Msg 208,
Level 16, State 82, Line 3 Invalid object name 'CSVTest1'. Msg 208,
Level 16, State 1, Line 3 Invalid object name 'CSVTest1'. Msg 3701,
Level 11, State 5, Line 3 Cannot drop the table 'CSVTest1', because it
does not exist or you do not have permission.

ここで助けていただければ幸いです。何時間も前に進めずに頭が爆発しそうです。私もMySQLを試しましたが、そこでもうまくいきませんでした。

私は新しいので、詳細に説明する必要があるかもしれません。

4

2 に答える 2

1

CREATE TABLEステートメントに不要なコンマがあるようです。最後の列の後、閉じ括弧の前にカンマがあります。一部の実装では有効かもしれませんが、削除してみてください。次のように変更します。

Volume varchar(10)

ああ - そして、2 番目の列定義に不要な終了親があるようです。次のように変更します。

dateval smalldatetime,

そして時間列:

timevale time,

最終的には、CREATE TABLE ステートメントの構文を正しく取得してから、他の部分の追加を開始する必要があるようです。

于 2012-08-24T23:30:24.427 に答える
0

最後の列定義の後にカンマは必要ありません: Volume varchar(10),.

私はそうあるtimevaleべきだと思いますtimeval

time()である必要がありますtime

また、私はおそらくうるさいですが、最初の2つを除くすべての列名の最初の文字を大文字にしています-エラーは発生しませんが、一貫した命名規則を使用することをお勧めします. val の 'v' を大文字にして、単語全体も書きます。

CSV データも修正する必要があります。null であっても、すべての列を指定する必要があります。サンプル データを参照してください (各行の末尾にある新しい行は、説明のみを目的としています)。

1234567890,2012-08-25,22:15,anytext,ornum,for,varchar,columns <-new line
abcd123456,2010-05-20,00:01,anything,in,these,varchar,columns <-new line
abcd123456,2010-05-20,00:01,anything,in,,,columns             <-new line

これは機能します:

CREATE TABLE CSVTest1 (
    Ticker varchar(10) NULL,
    DateValue smalldatetime NULL,
    TimeValue time NULL,
    OpenValue varchar(10) NULL,
    HighValue varchar(10) NULL,
    LowValue varchar(10) NULL,
    CloseValue varchar(10) NULL,
    Volume varchar(10) NULL)
GO

BULK INSERT CSVTest1
FROM 'C:\TEST.txt'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')
GO

CSV ファイルには、 で指定されているように、挿入するレコードごとに新しい行が必要ROWTERMINATOR = '\n'ですFIELDTERMINATOR = ','

編集:

ちなみに、SQL Server Management Studio (SSMS) を使用している場合は、ユーザー インターフェイスからテーブルを作成してから、次の操作を行うことができます。

  • テーブルを右クリック
  • スクリプトテーブルとして
  • 作成する
  • 新しいクエリ エディタ ウィンドウ
于 2012-08-24T23:59:53.337 に答える