質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1021閲覧

解決済しましたので削除しました

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/05/15 13:00

編集2018/05/23 14:25

解決済ですので削除させて頂きました。ありがとうございました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2018/05/16 04:27

いやさすがに適当すぎて再現は無理でしょう。「ALTER TABLE」自体は動いているので再現するコードをお願いします。
退会済みユーザー

退会済みユーザー

2018/05/16 04:47

お読み頂きありがとうございます。大変失礼致しました。修正させて頂きましたのでよろしくお願い致します。
guest

回答2

0

別の方法で解決しました。

投稿2018/05/23 14:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

とくに問題なく動いているようです。
記述ミスが散見されるので、修正して以下のような状態で確認しています。

JavaScript

1alasql('CREATE TABLE sample(id INT, word STRING, word2 STRING, word3 STRING);'); 2var qsample = alasql.promise('SELECT MATRIX * FROM CSV("file.csv", {headers:true})') 3 .then(function(promises) { 4 for (var i = 0; i < promises.length; i++) { 5 alasql('INSERT INTO sample VALUES (?, ?, ?, ?);', promises[i]); 6 } 7 8 console.log(alasql('SELECT * FROM sample;')); 9 // [{id: 1, word: "W1-1", word2: "W1-2", word3: "W1-3"}, {id: 2, word: "W2-1", word2: "W2-2", word3: "W2-3"}] 10 console.log(alasql('SHOW COLUMNS FROM sample;')); 11 // [{columnid: "id", dbtypeid: "INT", dbsize: undefined}, {columnid: "word", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word2", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word3", dbtypeid: "STRING", dbsize: undefined}] 12 13 alasql('ALTER TABLE sample ADD COLUMN adding STRING'); 14 console.log(alasql('SELECT * FROM sample;')); 15 // [{id: 1, word: "W1-1", word2: "W1-2", word3: "W1-3", adding: undefined}, {id: 2, word: "W2-1", word2: "W2-2", word3: "W2-3", adding: undefined}] 16 console.log(alasql('SHOW COLUMNS FROM sample;')); 17 // [{columnid: "id", dbtypeid: "INT", dbsize: undefined}, {columnid: "word", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word2", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word3", dbtypeid: "STRING", dbsize: undefined}, {columnid: "adding", dbtypeid: undefined, dbsize: undefined}] 18 19 alasql("INSERT INTO sample VALUES (3, 'W3-1', 'W3-2', 'W3-3', 'a');"); 20 console.log(alasql('SELECT * FROM sample;')); 21 // [{id: 1, word: "W1-1", word2: "W1-2", word3: "W1-3", adding: undefined}, {id: 2, word: "W2-1", word2: "W2-2", word3: "W2-3", adding: undefined}, {id: 3, word: "W3-1", word2: "W3-2", word3: "W3-3", adding: "a"}] 22 console.log(alasql('SHOW COLUMNS FROM sample;')); 23 // [{columnid: "id", dbtypeid: "INT", dbsize: undefined}, {columnid: "word", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word2", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word3", dbtypeid: "STRING", dbsize: undefined}, {columnid: "adding", dbtypeid: undefined, dbsize: undefined}] 24 25 alasql('ALTER TABLE sample DROP COLUMN adding'); 26 console.log(alasql('SELECT * FROM sample;')); 27 // [{id: 1, word: "W1-1", word2: "W1-2", word3: "W1-3"}, {id: 2, word: "W2-1", word2: "W2-2", word3: "W2-3"}] 28 console.log(alasql('SHOW COLUMNS FROM sample;')); 29 // [{columnid: "id", dbtypeid: "INT", dbsize: undefined}, {columnid: "word", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word2", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word3", dbtypeid: "STRING", dbsize: undefined}] 30 });

file.csv

CSV

1h1,h2,h3,h4 21,"W1-1","W1-2","W1-3" 32,"W2-1","W2-2","W2-3"

投稿2018/05/16 06:33

編集2018/05/17 01:05
x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/16 12:54

ご回答ありがとうございます。2度に分けて編集したのですが、2回目の編集が反映されていなかったようで、修正の手間をおかけして申し訳ありませんでした。 同じ文章で試してみたのですが、相変わらずadding is not found in tableになってしまいます。 SELECT * と SHOW COLUMNSの結果の差については、ADDとDROPの間に挟んで行っていた INSERTだけが機能していた結果だったようなのですが、そもそもaddingというカラムが追加されていなくても値をSETできるものなのでしょうか? alasql('ALTER TABLE sample ADD COLUMN adding'); alasql('INSERT INTO TABLE SET adding = a'); このタイミングでSHOW COLUMNSをするともとのCSVデータのみが表示され、 SELECT*をすると元のデータにadding:"a"も入ったものが表示されます。 ADD COLUMNをコメントアウトしても同じ結果でした。 alasql('ALTER TABLE sample DROP COLUMN adding'); この操作をするとcolumn adding is not found in table sampleとエラーになります。
x_x

2018/05/17 01:09

INSERTとUPDATEが混ざったような感じになっていますが、SQLの知識は大丈夫でしょうか? INSERTとみなし、本文に追加しました。 とにかく、誤記が多いため、一度見直してみるべきかと思います。 なお、ALTER TABLEでカラム追加時に型が指定できないというバグがあるようです(未定義のままでも動きますが)。 https://github.com/agershun/alasql/issues/172
退会済みユーザー

退会済みユーザー

2018/05/17 11:43

書き込んだ時に混同してしまっていました。すみません。この度はありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問