質問編集履歴
3
補足説明
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,6 +16,17 @@
|
|
16
16
|
$ mysql -uroot -p <Database> -e "select * from users;" | sed -e 's/\t/,/g' > <ファイルパス>/hoge.csv
|
17
17
|
```
|
18
18
|
とすれば、hoge.csvにはすべての値がカンマ区切りで出力されますが、このままではimport時にnameやupdateTimeフィールドがstringやdatetime型として認識されずエラーとなってしまいます。
|
19
|
+
```
|
20
|
+
//hoge.csv
|
21
|
+
id, name, updateTime
|
22
|
+
1, 田中 太郎, 2020-10-31 20:03:12
|
23
|
+
2, 鈴木 次郎, 2020-11-01 00:05:45
|
24
|
+
3, 山田 花子, 2020-10-02 01:01:30
|
25
|
+
...
|
26
|
+
..
|
27
|
+
.
|
28
|
+
|
29
|
+
```
|
19
30
|
```SQL
|
20
31
|
[mysql] INSERT IGNORE INTO users SELECT * FROM CSVREAD('<ファイルパス>/hoge.csv', null);
|
21
32
|
```
|
2
補足説明
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,5 +16,8 @@
|
|
16
16
|
$ mysql -uroot -p <Database> -e "select * from users;" | sed -e 's/\t/,/g' > <ファイルパス>/hoge.csv
|
17
17
|
```
|
18
18
|
とすれば、hoge.csvにはすべての値がカンマ区切りで出力されますが、このままではimport時にnameやupdateTimeフィールドがstringやdatetime型として認識されずエラーとなってしまいます。
|
19
|
+
```SQL
|
20
|
+
[mysql] INSERT IGNORE INTO users SELECT * FROM CSVREAD('<ファイルパス>/hoge.csv', null);
|
21
|
+
```
|
19
22
|
|
20
23
|
この場合、nameやupdateTimeは""で囲んでcsv上では文字列として格納しなければならないのでしょうか?またその場合特定のカラムは""で囲むようなsedの指定の仕方をしなければならないと思うのですが、どう書けばよいのでしょうか?
|
1
訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
例えば、以下のようなテーブルがあったときに、
|
4
4
|
```SQL
|
5
|
-
|
5
|
+
[mysql] desc users;
|
6
|
+
|
7
|
+
+--------------------+------------------------+------+-----+---------------------+----------------+
|
6
8
|
| Field | Type | Null | Key | Default | Extra |
|
7
9
|
+--------------------+------------------------+------+-----+---------------------+----------------+
|
8
10
|
| id | bigint unsigned | NO | PRI | NULL | auto_increment |
|